在.NetCore(C#)中使用ODP.NET Core+Dapper操作Oracle資料庫
目錄
- 異常
- 異常處理
- 觸發異常
- 異常型別
1、異常
異常是程式發生錯誤的訊號。程式一旦出現錯誤,便會產生一個異常,若程式中沒有處理它,就會丟擲該異常,程式的執行也隨之終止。
2、異常處理
為了保證程式的容錯性與可靠性,即在遇到錯誤時有相應的處理機制不會任由程式崩潰掉,我們需要對異常進行處理。
1、單個報錯處理語法:
try:
被檢測的程式碼塊
except 異常型別:
檢測到異常,就執行這個位置的邏輯
try:
print(x) # 引用了一個不存在的名字,觸發異常NameError
except NameError as e: # as語法將異常型別的值賦值給變數e,這樣我們通過列印e便可以知道錯誤的原因
print('異常錯誤:%s' %e)
print('正常執行!')
# 結果
異常錯誤:name 'x' is not defined
正常執行!
2、多個報錯處理語法
try:
被檢測的程式碼塊
except NameError:
觸發NameError時對應的處理邏輯
except IndexError:
觸發IndexError時對應的處理邏輯
except KeyError:
觸發KeyError時對應的處理邏輯
# 簡寫成
try:
被檢測的程式碼塊
except (NameError,IndexError,TypeError):
觸發NameError或IndexError或TypeError時對應的處理邏輯
3、萬能報錯處理語法:
try:
被檢測的程式碼塊
except Exception: # Exception捕獲任意報錯
觸發Exception時對應的處理邏輯
4、else用法
try:
被檢測的程式碼塊
except 異常型別1:
pass
except 異常型別2:
pass
......
else:
沒有異常發生時執行的程式碼塊
5、finally用法
try:
被檢測的程式碼塊
except 異常型別1:
pass
except 異常型別2:
pass
......
else:
沒有異常發生時執行的程式碼塊
finally:
無論有無異常發生都會執行的程式碼塊
3、觸發異常
raise語句自己觸發異常
語法:
raise 錯誤型別(錯誤資訊)
"""
錯誤型別:可選引數,不寫則不顯示
錯誤資訊:可選引數,不寫則不顯示
"""
try:
raise Exception('這是個錯誤!') # 製造報錯
except Exception as f: # 捕獲報錯
print(f)
print('正常執行!')
# 結果
這是個錯誤!
正常執行!
4、異常型別
異常名稱 : 描述
BaseException : 所有異常的基類
SystemExit : 直譯器請求退出 KeyboardInterrupt : 使用者中斷執行(通常是輸入^C)
Exception : 常規錯誤的基類 StopIteration : 迭代器沒有更多的值
GeneratorExit : 生成器(generator)發生異常來通知退出
StandardError : 所有的內建標準異常的基類
ArithmeticError : 所有數值計算錯誤的基類 FloatingPointError : 浮點計算錯誤
OverflowError : 數值運算超出最大限制 ZeroDivisionError : 除(或取模)零
(所有資料型別) AssertionError : 斷言語句失敗
AttributeError : 物件沒有這個屬性 EOFError : 沒有內建輸入,到達EOF 標記
EnvironmentError : 作業系統錯誤的基類 IOError : 輸入/輸出操作失敗
OSError : 作業系統錯誤 WindowsError : 系統呼叫失敗
ImportError : 匯入模組/物件失敗 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 : 使用者程式碼生成的警告