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