app inventor離線版 2021 下載使用教程
阿新 • • 發佈:2021-08-10
簡介
異常是指當程式語法正確,但執行的時候依舊發生的錯誤我們稱之為異常。
異常一般不會被程式處理,都已錯誤資訊的形式表現出來。
異常處理
try/except
try:
# 程式正常執行的程式碼
a = os.listdir()
except:
# 發生異常時執行的程式碼
print('發生異常')
發生異常
執行步驟:
- 首先執行try和except之間的語句
- 沒有發生異常,忽略except子句
- 如果發生異常try子句剩餘的部分將被忽略,異常的型別和except後的名稱相符則執行except子句
- 如果異常型別和except定義的不匹配則會重新傳遞給try子句,由直譯器丟擲錯誤資訊
注意:
- 可以定義多個不同型別的異常,最多隻有一個分支被執行
- 一個except語句也可以同時處理多個異常,需要將這些異常放在一個元組中
- 當except沒有指定具體的異常型別時,它將被當做萬用字元使用,接收所有異常
try/except...else
try:
# 正常執行的程式碼
a = 3
b = 4
c = a/b
except:
# 發生異常時執行的程式碼
print('發生異常')
else:
# 沒有發生異常時執行的程式碼
print('{0}/{1}={2}'.format(a,b,c))
3/4=0.75
- else子句在try子句沒有發生異常時執行
- 使用 else 子句比把所有的語句都放在 try 子句裡面要好,不僅僅處理那些直接發生在 try 子句中的異常,而且還能處理子句中呼叫的函式(甚至間接呼叫的函式)裡丟擲的異常。
- else子句方便定位異常
try/finally
try: # 正常執行的程式碼 a = 3 b = 4 c = a/b d = 10 e = d/0 except: # 發生異常時執行的程式碼 print('發生異常') else: # 沒有發生異常時執行的程式碼 print('{0}/{1}={2}'.format(a,b,c)) finally: print('d*c={0}'.format(c*d))
發生異常
d*c=7.5
- try-finally 語句無論是否發生異常都將執行最後的程式碼。
丟擲異常
Python 使用 raise 語句丟擲一個指定的異常。
raise語法格式
raise [Exception [, args [, traceback]]]
a = 0
if a == 0:
raise Exception('b/a中除數a為0所以丟擲異常')
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-4-f517360799a9> in <module>
1 a = 0
2 if a == 0:
----> 3 raise Exception('b/a中除數a為0所以丟擲異常')
Exception: b/a中除數a為0所以丟擲異常