异常
当Python程序执行时遭遇到错误,解释器将无法继续往下执行,此时会出现错误提示,这便是异常。
- 例如打开一个不存在的文件

- 使用一个没有定义的变量

捕获异常
- try-except
将可能出现问题的代码,放在try中,把处理异常的代码放在except中。
try:
open("www.txt",'r')
except FileNotFoundError:
print("--------处理异常-------")
print("您打开的文件不存在")
输出:
--------处理异常-------
您打开的文件不存在
当我们需要捕获多个异常时,可以将要捕获异常的名字放在一个元组中。except之后使用Exception将捕获所有异常,有时我们希望存储捕获的异常可以使用as。
try:
open("www.txt",'r')
print(num)
except (FileNotFoundError,NameError) as exceptionInfo:
print("--------处理异常-------")
print("您打开的文件不存在")
print("异常的基本信息:",exceptionInfo)
输出:
--------处理异常-------
您打开的文件不存在
异常的基本信息: [Errno 2] No such file or directory: 'www.txt'
- else
在if中条件不满足时就会执行,for循环中不满足条件时就会执行。类似在try-except中如果没有异常将被执行else中的逻辑代码。
try:
open("test.py",'r')
num = 100
print(num)
except (FileNotFoundError,NameError) as exceptionInfo:
print("--------处理异常-------")
print("您打开的文件不存在")
print("异常的基本信息:",exceptionInfo)
else:
print("没有异常产生,可以完美使用")
输出:
100
没有异常产生,可以完美使用
- try-finally
如果使用try-finally捕获异常,那么无论异常是否产生都要执行finally部分语句。finally通常用来文件关闭,释放锁,数据库连接返还给连接池等。
def division(a,b):
try:
result = a/b
print("return----before")
return result
except Exception as errorInfo:
print("捕获异常信息:",errorInfo)
else:
print("没有异常,result=",result)
finally:
print("finally---让我来做最后的事情吧")
division(100,20)
print("--"*20)
division(100,0)
输出:
return----before
finally---让我来做最后的事情吧
----------------------------------------
捕获异常信息: division by zero
finally---让我来做最后的事情吧
当程序产生异常时,先执行打印异常信息,然后执行finally语句。如果程序没有异常finally会在return之后立即执行。如果注释掉return result语句,在没有错误的情况下,else执行之后,才执行finally语句。
return----before 没有异常,result= 5.0 finally---让我来做最后的事情吧 ---------------------------------------- 捕获异常信息: division by zero finally---让我来做最后的事情吧
自定义异常
首先创建一个子类去继承Error或者Exception,然后使用raise引发一个异常。
class ShortInputException(Exception):
def __init__(self,length,atleast):
super().__init__()
self.length = length
self.atleast = atleast
def test():
try:
s = input("请输入:")
if len(s) < 3:
raise ShortInputException(len(s),3)
except ShortInputException as info:
print("ShortInputException: 输入的长度是 %d,长度至少应是 %d"% (info.length, info.atleast))
else:
print("--else--没有异常--")
test()
输出:
请输入:abc
--else--没有异常--
请输入:as
ShortInputException: 输入的长度是 2,长度至少应是 3
来源:https://www.cnblogs.com/jsnhdream/p/10042268.html