開始看代碼了,靠自己那點小基礎是遠遠不夠的,下面整理了一些與我而言的新的知識點。
參考資料:
【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