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