IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python中的异常类型及处理方式 -> 正文阅读

[Python知识库]Python中的异常类型及处理方式

目录

前言

正文

一、什么是异常

二、异常的类型

三、异常处理

四、try 介绍

五、finally 介绍

六、raise 介绍

结尾


前言

Python 是一种面向对象的、解释型的、通用的、开源的脚本编程语言。现在市面上 Python 非常的流行,主要是因为它简单易用,学习成本低,比如要实现某个功能,Python 可能只需要几行代码,而用C语言可能需要上百行代码,因为C语言什么都要得从头开始编码,而 Python 已经内置了很多功能模块,所以,我们只需要导入特定的包,就可以实现想要的效果。

正文

今天,我们主要来了解一下 Python 中的异常类型以及它们的处理方式。说到异常处理,我们首先要知道什么是异常。其实,异常就是一类事件,当它们发生时,会影响到程序的正常执行。

一、什么是异常

其实,异常就是一类事件,当此类事件在程序执行过程中发生时,就会影响程序的正常执行。一般情况下,在 Python 无法正常处理程序时就会发生一个异常,而异常是 Python 的一种对象类型,用来表示一个错误。当 Python 脚本发生异常时我们需要捕获并处理它,否则程序就会终止。

二、异常的类型

Python 中定义了一些标准的异常类型,具体的异常名称和对应的实际意义,我们可以通过下面的表格来了解。

异常名称描述
BaseException所有异常的基类
SystemExit解释器请求退出
KeyboardInterrupt用户中断执行(通常是输入^C)
Exception常规错误的基类
StopIteration迭代器没有更多的值
GeneratorExit生成器(generator)发生异常来通知退出
StandardError所有的内建标准异常的基类
ArithmeticError所有数值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
ZeroDivisionError除(或取模)零 (所有数据类型)
AssertionError断言语句失败
AttributeError对象没有这个属性
EOFError没有内建输入,到达EOF 标记
EnvironmentError操作系统错误的基类
IOError输入/输出操作失败
OSError操作系统错误
WindowsError系统调用失败
ImportError导入模块/对象失败
LookupError无效数据查询的基类
IndexError序列中没有此索引(index)
KeyError映射中没有这个键
MemoryError内存溢出错误(对于Python 解释器不是致命的)
NameError未声明/初始化对象 (没有属性)
UnboundLocalError访问未初始化的本地变量
ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError一般的运行时错误
NotImplementedError尚未实现的方法
SyntaxErrorPython 语法错误
IndentationError缩进错误
TabErrorTab 和空格混用
SystemError一般的解释器系统错误
TypeError对类型无效的操作
ValueError传入无效的参数
UnicodeErrorUnicode 相关的错误
UnicodeDecodeErrorUnicode 解码时的错误
UnicodeEncodeErrorUnicode 编码时错误
UnicodeTranslateErrorUnicode 转换时错误
Warning警告的基类
DeprecationWarning关于被弃用的特征的警告
FutureWarning关于构造将来语义会有改变的警告
OverflowWarning旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning可疑的运行时行为(runtime behavior)的警告
SyntaxWarning可疑的语法的警告
UserWarning用户代码生成的警告

其实,在上述表格中列出的异常中,也具备一定的层次关系,我们可以通过下图来了解一下。

三、异常处理

在实际开发过程中,我们需要写出健壮性的程序,不希望我们的程序在执行过程中遇到了异常就自动终止。因此,我们需要处理程序执行过程中的异常事件,从而保证程序不会因为发生异常而终止。在编码过程中,我们可以简单使用 try/except 语句来捕捉异常,具体语法如下:

try:
<语句>        # 运行别的代码
except 异常类型:
<语句>        # 如果在try部份引发了异常
else:
<语句>        # 如果没有异常发生

熟悉 Java 的小伙伴都知道,在 Java 中是通过 try...catch 语句来捕获代码中的异常事件的,在 Python 中使用什么呢?

其实,在 Python 中是使用 try...except 语句用来捕获异常,通过监视 try 语句块中的错误,从而让 except 语句捕获异常信息并进行处理。

因此,如果你不想在异常发生时结束你的程序,就需要在 try 语句块中捕获相应的异常。

接下来,我们通过一个代码实例来具体了解一下 try...except 的用法。

代码实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("test.txt", "r")
    fh.write("这是一个测试文件,用于测试Python中的异常!")
except IOError:
    print "Error: 写入文件失败"
else:
    print "内容写入文件成功"
    fh.close()

上述代码的意思是以可读模式打开一个 test.txt 文件,然后向文件中写入一段话:这是一个测试文件,用于测试Python中的异常! 因为文件是以可读模式打开的,所以没有写入权限,肯定会出错,但是因为是在 try 代码块中,肯定会被对应的IO错误类型捕获,并输入提示信息:Error:写入文件失败。

运行结果:

然后,我们修改代码,以写模式打开文件再写入对应的语句,修改后代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("test.txt", "w")
    fh.write("这是一个测试文件,用于测试Python中的异常!")
except IOError:
    print "Error: 写入文件失败"
else:
    print "内容写入文件成功"
    fh.close()

这时,我们发现文件能够正常写入内容了,并且不会触发异常事件发生。

运行结果:

四、try 介绍

try 的工作原理是,当开始一个 try 语句后,python 就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try 子句先执行,接下来会发生什么依赖于执行时是否出现异常。大致的情况可以分为两种,一种是触发了异常,另一种是没有触发异常,具体表现如下:

1. 如果当 try 后的代码里发生了异常,python 就跳回到 try 并执行第一个匹配该异常的 except 子句,异常处理完毕,控制流就通过整个 try 语句。

2. 如果在 try 后的代码里没有发生异常,python将执行else语句后的语句,然后控制流通过整个try语句。

其实,上面的代码实例很好的覆盖了这两种情况。

五、finally 介绍

finally 语句块中的内容,无论程序是否发生了异常都执行。这一点和 Java 是类似的,具体我们来看一段代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("test.txt", "r")
    fh.write("这是一个测试文件,用于测试Python中的异常!")
except IOError:
    print "Error: 写入文件失败"
else:
    print "内容写入文件成功"
    fh.close()
finally:
    print "异常发生了,执行finally代码块"

上述代码在原来的基础上增加了 finally 代码块,发生了异常,依然会执行 finally 代码块。同样,即使没有触发异常,也会执行相应的 finally 代码块。感兴趣的小伙伴可以自己动手试一下,这里就不演示了。

运行结果:

六、raise 介绍

在 Java 中,我们可以使用 throw 语句主动抛出异常,那么在 Python 中,是否也有类似的关键字呢?答案是肯定的。接下来,我们就来了解一下 raise 关键字。在编码过程中,我们可以使用 raise 语句主动触发异常。具体的语法可以参考如下格式:

raise [Exception [, args [, traceback]]]

需要注意的是语句中 Exception 是异常的类型(例如,IOError、OSError),参数标准异常中任意一种,参数 args 是自已提供的异常参数。最后一个参数 trackback 是可选的,一般为空。

实例代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("test.txt", "w")
    fh.write("这是一个测试文件,用于测试Python中的异常!")
except IOError:
    print "Error: 写入文件失败"
else:
    print "内容写入文件成功"
    try:
	print "抛出自定义异常"
    	raise Exception("这是一个自定义异常事件")
    except:
	print "自定义异常事件被捕获"
    fh.close()

finally:
    print "自定义异常发生了,执行finally代码块"

运行结果:

结尾

好了,今天关于 Python 的介绍就到这里吧,本文主要分享了 Python 中的异常类型以及异常发生时的处理方法,Python 简单易用,感兴趣的小伙可以自己试试呦!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:30:44  更:2021-08-24 15:31:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 12:45:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计