简介
当你的程序不能正常运行的时候,python会在控制台打印一段提醒,告诉你一个错误,这个错误就是异常。
错误
我在控制台写了一段无效的代码,将print()的括号去掉,在执行这条语句的时候,系统提示语法错误,无效的语句(我百度翻译的)。这就是错误处理器所作的工作。
再换一种方式写错误:
在程序获取用户输入的时候,我们使用ctrl+d引发了一个eoferror错误,接下来我们尝试去处理这样的错误。
处理异常
使用try---except语句来处理异常。我们通常把容易产生异常的语句放置在try块中,把做异常处理的语句放在except块中。
1
2
3
4
5
6
7
8
9
10
11
|
import sys
try :
a = input ( 'enter something:' )
except (eoferror):
print ( '\nwhy did you do an eof on me ?' )
sys.exit()
except :
print ( '\nsome error/exception occurred.' )
print ( 'done' )
|
运行结果
我们把所有可能引发错误的语句放在try
块中,然后在except
从句/块中处理所有的错误和异常。except
从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try
从句,至少都有一个相关联的except
从句。
你还可以让try..catch
块关联上一个else
从句。当没有异常发生的时候,else
从句将被执行。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import sys
try :
a = input ( 'enter something:' )
except (eoferror):
print ( '\nwhy did you do an eof on me ?' )
sys.exit()
except :
print ( '\nsome error/exception occurred.' )
else :
print ( 'no error' )
print ( 'done' )
|
运行结果
raise引发异常
你可以使用raise语句抛出异常。你需要指明错误/异常的名称和伴随异常触发的异常对象。这个异常应该是error和exception类的子类。这就用到了继承的思想,使用__init__方法初始一些方法和参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
class shortinputexception(exception):
def __init__( self ,length,atleast):
exception.__init__( self )
self .length = length
self .atleast = atleast
try :
s = input ( 'enter something-->' )
print ( len (s))
if len (s) < 3 :
raise shortinputexception( len (s),atleast = 3 )
except (eoferror):
print ( '\nwhy did you do an eof on me ?' )
except (shortinputexception) as x:
print ('shortinputexception: the in input was of length % d,\
was expecting at least % d' % (x.length,x.atleast))
else :
print ( 'no exception was raised.' )
|
运行结果
try...finally
假如在你读文件的时候发生了异常,但是无论如何文件都要关闭。这个时候该怎么做呢?
这里我们需要使用finally块来完成。
在使用try捕获异常的时候,我们可以同时使用except块和finally块。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import time
try :
f = open ( 'poem.txt' )
while true: # our usual file-reading idiom
line = f.readline()
if len (line) = = 0 :
break
time.sleep( 2 )
print (line)
finally :
f.close()
print ( 'cleaning up...closed the file' )
|
运行结果
这里使用了time的sleep函数,里面的参数是它的运行间隔。
这样我们就有时间去使用ctrl+c使程序发生异常。这时候我们发现finally块中的语句还是运行的,文件正常关闭了。
简极(∞+∞=∞ ∞-∞=∞)
以上所述是小编给大家介绍的python异常详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://www.cnblogs.com/liuhappy/p/10668515.html