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)