Python - 异常处理详解(附:触发异常、自定义异常)
作者:hangge | 2022-06-01 08:30
异常是 Python 对象,表示一个错误。一般情况下,在 Python 无法正常处理程序时就会发生一个异常。当 Python 脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
(7)我们也可以不带任何异常类型使用 except:
(2)异常参数可以写多个:
1,异常处理
(1)捕捉异常可以使用 try...except 语句,其中 except 后面为异常类型:
try:
f = open("hangge", "r")
print(f.read())
except IOError:
print("Error: 没有找到文件或读取文件失败")
(2)try....except...else 语句表示如果 try 子句执行时没有发生异常,python 将执行 else 语句后的语句,然后控制流通过整个 try 语句:
try:
f = open("hangge.txt", "r")
print(f.read())
except IOError:
print("Error: 没有找到文件或读取文件失败")
else:
print("读取成功!")
(3)try...finally 语句无论是否发生异常都将执行最后的代码:

try:
f = open("hangge", "r")
print(f.read())
except IOError:
print("Error: 没有找到文件或读取文件失败")
finally:
print("无论是否异常,都会执行")
(4)我们可以给异常可以带上参数,可作为输出的异常信息参数:
try:
f = open("hangge", "r")
print(f.read())
except IOError as e:
print("发生异常:")
print(e)

(5)except 异常分支可以有多个,当发生异常时会从上到下依次进行匹配,只执行最先匹配的一个 except:
try:
f = open("hangge", "r")
print(f.read())
except FileNotFoundError:
print("无法打开指定的文件!")
except IOError:
print("读取文件发生错误!")
(6)可以相同的 except 语句来处理多个异常信息:
try:
f = open("hangge", "r")
print(f.read())
except(FileNotFoundError, IOError):
print("没有找到文件或读取文件失败")
(7)我们也可以不带任何异常类型使用 except:
try:
f = open("hangge", "r")
print(f.read())
except:
print("没有找到文件或读取文件失败")
2,手动触发异常
(1)我们可以使用 raise 语句自己触发异常:
def test( level ):
if level < 1:
raise Exception("Invalid level!")
# 触发异常后,后面的代码就不会再执行
print("Invalid level:", level)
else:
print("Level:", level)
try:
test(0)
except Exception as e:
print("发生异常:")
print(e)
(2)异常参数可以写多个:
def test( level ):
if level < 1:
raise Exception("Invalid level!", level, '@@@')
# 触发异常后,后面的代码就不会再执行
print("Invalid level:", level)
else:
print("Level:", level)
try:
test(0)
except Exception as e:
print("发生异常:")
print(e)
3,自定义异常
我们可以创建一个新的异常类实现自定义异常,比如下面样例创建了一个名为 iNetworkError 的异常类,其基类为 RuntimeError:
#自定义异常类
class NetworkError(RuntimeError):
def __init__(self, arg):
self.args = arg
#自定义异常类的使用
try:
raise NetworkError("Bad hostname")
except NetworkError as e:
print("发生异常:")
print(e)
全部评论(0)