异常
定义
- 异常是指程序中的例外,违例,影响程序正常执行的情况
- 异常机制是指程序出现错误后,程序的处理方法
- 不处理异常,程序中止
语法
try:
<语句>#可能发生异常的代码
except<名字>:
<语句>#如果在try部份引发了'name'异常
except<名字> as <异常参数>:
<语句>#如果引发了‘name’异常,获得附加的异常对象
else:
<语句>#如果没有异常发生
try-except
- 不带参数的try- except语句捕获所有发生 的异常
import sys
try :
n= 0
print (10 / n)
except:
print ("做除法时发生异常!")
try-except(Exception1[,Exception2[,…ExceptionN]]])
- 可以使用一个except语句来处理多个类型 异常,也可以针对不同的异常 ,分别写一个except语句
try:
fp = open('t.txt','r')
content=fp.read()
fp.close()
except IOError:
print('读取文件时,发生IOerror 异常!')
else:
print('文件读取成功')
print(content)
try-finally/else
- 在try块中抛出一个异常,程序会立即执行finally块代码(如果有的话)
- 当finally 块中的所有代码被执行结束后,异常才会被再次提出,并执行except块代码
- finally和else语句块可以同时存在。如果发生异常只执行finally语句块,否则两语 句块都会执行
import sys
try:
s=input('Enter something-->')
except KeyboardInterrupt:
print('\nwhy did you do an Ctrl+c on me?')
sys.exit()
except:
print('\nSome error/exception occurred.')
else:
print('no exception occur!')
finally:
print('finally is executed!')
try-finally
try:
fp=open('a.txt','r')
try:
content=fp.read()
print(content)
finally:
print('关闭文件')
fp.close()
except IOError:
print('Error:没有找到文件或读取文件失败')
异常参数
语法
try-except ExecptionType,argument
- 一个异常可以带上参数,可作为输出的异常信息参数。通过except语句来捕获异 常的参数
- 异常参数接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收 一个或者多个值。元组通常包含错误字符串,错误数字,错误位置
try:
fp=open('c.txt','r')
try:
content=fp.read()
finally:
fp.close()
except Exception as e:
print('文件读取失败')
print('打印异常信息')
print(e)
raise 触发异常
语法:
raise[SomeExcpetion[, args [, traceback]]]
- SomeExcpetion:是一个异常的类型,如NameError,可选;
- args:是一个异常参数值,通常为元组,可选,如果不提供为“None”。
- traceback:可选的,实际很少用,如果存在,是跟踪异常对象。
- 如果有 其他参数(arg 或traceback),就必须提供SomeExcpetion
import traceback
try:
value=input('请输入一个整数:')
if not value.isdigit():
raise ValueError('not a int')
except ValueError as e:
print('值错误:',e)
自定义异常
class Networkerror(RuntimeError):
def __init__(self,value):
self.value = value
try:
raise Networkerror('bad hostname')
except Networkerror as e:
print('My exception occured,value',e.value)