python 異常處理中try else語句的使用

try:
    語句...
except 異常的名稱:
    語句...

如果未發生異常則運行try之下的語句,如果發生了異常,則運行except下面的語句.,epcept之後的異常類型只在發生對應異常時生效.

a=10
b=0
try:
    c = b/ a
    print(c)
except  IOError ,ZeroDivisionError:
    pass
else:
    print ("no error")
print("done")

try ....except...else 語句,當沒有異常發生時,else中的語句將會被執行。

inputValue=input("please input a int data :")
if type(inputValue)!=type(1):
    raise ValueError
else:
    print(inputValue)

raise 引發一個異常

如果輸入的數據不是整數,則引發一個ValueError

a=10
b=0
try:
    print(a/b)
finally:
    print ("always excute")

try ...finally 

無論異常是否發生,在程序結束前,finally中的語句都會被執行。

a=10
b=0
try:
    print(a/b)
except:
    print("error")
finally:
    print("always excute")

finally語句也可以和except語句一起使用。

自定義一個MyException類,繼承Exception。

class MyException(Exception):
    def __init__(self,message):
        Exception.__init__(self)
        self.message=message   

如果輸入的數字小於10,就引發一個MyException異常:

a=input("please input a num:")
if a<10:
    try:
        raise MyException("my excepition is raised ")
    except MyException,e:
        print (e.message)

異常也可以自定義

# 斷言 - 語法
# assert 1==2  # 只能接受一個布爾值  False
# assert 1==1  # 只能接受一個布爾值  False
# print(123456)
# if 1 == int(input()):
#     pass
# else:
#     raise AssertionError

 

 

常見的異常總結

異常名稱                    描述
BaseException             所有異常的基類
SystemExit             解釋器請求退出
KeyboardInterrupt     用戶中斷執行(通常是輸入^C)
Exception                      常規錯誤的基類
StopIteration              迭代器沒有更多的值
GeneratorExit              生成器(generator)發生異常來通知退出
SystemExit              Python 解釋器請求退出
StandardError               所有的內建標準異常的基類
ArithmeticError              所有數值計算錯誤的基類
FloatingPointError     浮點計算錯誤
OverflowError                數值運算超出最大限制
ZeroDivisionError     除(或取模)零 (所有數據類型)
AssertionError               斷言語句失敗
AttributeError               對象沒有這個屬性
EOFError                      沒有內建輸入,到達EOF 標記
EnvironmentError     操作系統錯誤的基類
IOError                     輸入/輸出操作失敗
OSError                     操作系統錯誤
WindowsError                系統調用失敗
ImportError               導入模塊/對象失敗
KeyboardInterrupt     用戶中斷執行(通常是輸入^C)
LookupError     無效數據查詢的基類
IndexError     序列中沒有沒有此索引(index)
KeyError     映射中沒有這個鍵
MemoryError     內存溢出錯誤(對於Python 解釋器不是致命的)
NameError     未聲明/初始化對象 (沒有屬性)
UnboundLocalError     訪問未初始化的本地變量
ReferenceError     弱引用(Weak reference)試圖訪問已經垃圾回收了的對象
RuntimeError     一般的運行時錯誤
NotImplementedError     尚未實現的方法
SyntaxError     Python 語法錯誤
IndentationError     縮進錯誤
TabError     Tab 和空格混用
SystemError     一般的解釋器系統錯誤
TypeError     對類型無效的操作
ValueError     傳入無效的參數
UnicodeError     Unicode 相關的錯誤
UnicodeDecodeError     Unicode 解碼時的錯誤
UnicodeEncodeError     Unicode 編碼時錯誤
UnicodeTranslateError     Unicode 轉換時錯誤
Warning     警告的基類
DeprecationWarning     關於被棄用的特徵的警告
FutureWarning     關於構造將來語義會有改變的警告
OverflowWarning     舊的關於自動提升爲長整型(long)的警告
PendingDeprecationWarning     關於特性將會被廢棄的警告
RuntimeWarning     可疑的運行時行爲(runtime behavior)的警告
SyntaxWarning     可疑的語法的警告
UserWarning     用戶代碼生成的警告

引用:https://www.cnblogs.com/journey-mk5/p/9457128.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章