我們在設計程序時,為了保證程序的安全性,我們經常把可能發生錯誤的代碼段放在try...catch塊中,來捕捉可能發生的錯誤,并給予處理。當然這種錯誤不是程序的語法錯誤,也不是在編譯時能發現的錯誤,只有程序運行時才可能出現的錯誤,如用戶輸入的被除數為零;數組越界;鏈接數據庫時,指定的數據源不存在;查詢數據庫時,指定的表或列不存在等,都有可能引發程序發生異常。
在C#中提供了異常處理的方法,即如下語句塊:
try{...}
catch(){...}
finally{...}
其中,try塊中放入可能出錯的語句,catch塊中添加異常發生時的處理語句,finally塊中的語句不管異常是否發生都要被執行,當然finally語句塊也可以省略。
在catch語句的()中聲明異常類的實例以在其塊中進行使用。常用的異常類如下:
1、與參數有關的異常類
此類異常類均派生于System.Exception,用于處理給方法成員傳遞的參數時發生異常.
(1)ArgumentException類:該類用于處理參數無效的異常,除了繼承來的屬性名,此類還提供了string類型的屬性ParamName表示引發異常的參數名稱。
(2)FormatException類:該類用于處理參數格式錯誤的異常。
2、與成員訪問有關的異常
(1) MemberAccessException類:該類用于處理訪問類的成員失敗時所引發的異常。
失敗的原因可能的原因是沒有足夠的訪問權限,也可能是要訪問的成員根本不存在(類與類之間調用時常用)
(2) MemberAccessException類的直接派生類:
i、FileAccessException類:該類用于處理訪問字段成員失敗所引發的異常
ii、MethodAccessException類:該類用于處理訪問方法成員失敗所引發的異常
iii、MissingMemberException類:該類用于處理成員不存在時所引發的異常
3、與數組有關的異常
(1)IndexOutOfException類:該類用于處理下標越界所引發的異常
(2)ArrayTypeMismatchException類:該類用于處理在數組中存儲元素的數據類型不匹配所引發的異常
(3)RankException類:該類用于處理維數錯誤所引發的異常
4、與IO有關的異常
(1)IOException類:該類用于處理進行文件輸入輸出操作時所引發的異常。
(2)IOException類的5個直接派生類:
i、DirectionNotFoundException類:該類用于處理沒有找到指定的目錄而引發的異常。
ii、FileNotFoundException類:該類用于處理沒有找到文件而引發的異常。
iii、EndOfStreamException類:該類用于處理已經到達流的末尾而還要繼續讀數據而引發的異常。
iv、FileLoadException類:該類用于處理無法加載文件而引發的異常。
v、PathTooLongException類:該類用于處理由于文件名太長而引發的異常。
5、與算術有關的異常
(1)ArithmeticException類:該類用于處理與算術有關的異常。
(2)ArithmeticException類的派生類:
i、DivideByZeroException類:表示整數貨十進制運算中試圖除以零而引發的異常。
ii、NotFiniteNumberException類:表示浮點數運算中出現無窮打或者非負值時所引發的異常。
新聞熱點
疑難解答