开始看代码了,靠自己那点小基础是远远不够的,下面整理了一些与我而言的新的知识点。
参考资料:
【1】(Python)异常处理try...except、raise——我是爱哭鬼 传送门
[1]
正常写代码时会遇到错误,导致错误之后代码无法继续(错了为啥还要继续……界面友好呗,别让别人用着用着崩溃了……)。所以提出了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 <module>
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