正常写代码时会遇到错误,导致错误之后代码无法继续(错了为啥还要继续……界面友好呗,别让别人用着用着崩溃了……)。所以提出了try...except(这个java的tyy...catch很像)。一个try至少带一个except(或finally,见下一个),except负责处理异常,可以处理一个或多个,多个可以用括号括起来,逗号分隔,或者不写表示处理所有。
1 try:
2 pass
3 except (IOError ,ZeroDivisionError),e:
4 print e
5 #这里面就是处理了两个异常,另外,那个e前需要一个逗号哟
try ....except...else 语句,当没有异常发生时,else中的语句将会被执行。
例子:
1 a=10
2 b=0
3 try:
4 c = b/ a
5 print c
6 except (IOError ,ZeroDivisionError),x:
7 print x
8 else:
9 print "no error"
10 print "done"
运行结果:
0
no error
done
*************
另外,try也可以和finally连用,包括try...except...finally也是可以的,这个和JAVA一样,无论结果如何都会执行finally内的代码。
*************
raise也可以抛出异常,它是“引发一个异常”(引发?是不是说其实不一定真的有异常,但可以强制抛出来一个?)
例子:如果输入的数据不是整数,则引发一个ValueError
1 inputValue=input("please input a int data :")
2 if type(inputValue)!=type(1):
3 raise ValueError
4 else:
5 print inputValue
假设输入1.2,运行结果为:
please input a int data :1.2
Traceback (most recent call last):
File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in
raise ValueError
ValueError
如果输入1,运行结果为:
please input a int data :1
1
*********
最后呢,还可以自己自定义异常(重点是格式):
自定义一个MyException类,继承Exception。
1 class MyException(Exception):
2 def __init__(self,message):
3 Exception.__init__(self)
4 self.message=message
如果输入的数字小于10,就引发一个MyException异常:
1 a=input("please input a num:")
2 if a<10:
3 try:
4 raise MyException("my excepition is raised ")
5 except MyException,e:
6 print e.message
运行结果:
please input a num:1
my excepition is raised