開始看代碼了,靠本身那點小基礎是遠遠不夠的,下面整理了一些與我而言的新的知識點。html
參考資料:java
【1】(Python)異常處理try...except、raise——我是愛哭鬼 傳送門spa
正常寫代碼時會遇到錯誤,致使錯誤以後代碼沒法繼續(錯了爲啥還要繼續……界面友好唄,別讓別人用着用着崩潰了……)。因此提出了try...except(這個java的tyy...catch很像)。一個try至少帶一個except(或finally,見下一個),except負責處理異常,能夠處理一個或多個,多個能夠用括號括起來,逗號分隔,或者不寫表示處理全部。code
1 try: 2 pass 3 except (IOError ,ZeroDivisionError),e: 4 print e 5 #這裏面就是處理了兩個異常,另外,那個e前須要一個逗號喲
try ....except...else 語句,當沒有異常發生時,else中的語句將會被執行。htm
例子:blog
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"
運行結果:繼承
0get
no errorinput
doneit
*************
另外,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