Intro
python标准库的每个模块都使用了异常,异常在python中除了可以捕捉错误,还有一些其他用途,如释放对象、中止循环的运用等作用。当程序中出现异常或错误时,最后的解决办法就是调试程序。
Knowledge
异常:是指程序中的例外、违例情况。
异常机制:是指当程序出现错误后,程序的处理方法,异常机制提供了程序正常退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。
Exception类:最常用的异常类,该类包括StandardError、StopIteration、GeneratorExit、Warning等异常类。
StandardError类:错误异常,如程序出现逻辑上的错误,将引发该异常。
StopIteration类:判断循环是否执行到尾部,如循环到达尾部,而抛出该异常。
GeneratorExit类:由Generator函数引发的异常,当调用方法close()时引发该异常。
Warning类:表示程序中的代码引起的警告。
try...except语句:用于处理问题语句,捕获可能出现的异常。
try...finally语句:无论异常是否发生,finally子句都会被执行。
raise语句:显示引发异常语句。一旦执行了raise语句,raise语句后的代码将不能被执行。
自定义异常:用于描述python异常体系中没有涉及的异常情况。自定义异常必须继承Exception类,并命名以“Error”结尾,常用raise语句引发,且只能通过手工方式触发。
assert语句:用于检测某个条件表达式是否为真。又称为断言语句,即assert认为检测的表达式永远为真。
Apply
apply1:try...except语句
try:
f=open('small.txt','r')
print('读取文件')
except IOError:
print('文件不存在')
except:
print('程序异常')
apply2:try...except...else语句
try:
result=10/0
except :
print('除数不能为0')
else:
print(result)
apply3:try...except...finally语句
a=10
b=0
try:
result=a/b
except :
print('除数不能为0')
finally:
print('除数的值为%d'%b)
apply4:raise语句
b=None
try:
if b is None :
print(b)
raise NameError
print(len(b))
except TypeError :
print('除数不能为0')
apply5:自定义异常
from __future__ import division
class DivistionException(Exception):
def __init__(self,x,y):
Exception.__init__(self,x,y)
self.x = x
self.y = y
try:
x=3
y=2
print(x/y)
raise DivistionException(x,y)
except DivistionException as div:
print('DivistionException:x/y=%0.2f'%(div.x/div.y))
apply6:注释raise异常,DivistionException异常将不会被触发
from __future__ import division
class DivistionException(Exception):
def __init__(self,x,y):
Exception.__init__(self,x,y)
self.x = x
self.y = y
try:
x=3
y=2
print(x/y)
#raise DivistionException(x,y)
except DivistionException as div:
print('DivistionException:x/y=%0.2f'%(div.x/div.y))
apply7:assert语句
t='hekksf'
assert len(t)>=1
s='adsgfhgjk'
assert len(s)==1
Result
appy1:
文件不存在
apply2:
除数不能为0
apply3:
除数不能为0
除数的值为0
apply4:
None
NameError
apply5:
1.5
DivistionException:x/y=1.50
apply6:
1.5
apply7:
AssertionError
领取专属 10元无门槛券
私享最新 技术干货