日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#异常处理机制初步

發(fā)布時間:2023/11/30 C# 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#异常处理机制初步 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原地址:http://www.sudu.cn/info/html/edu/net/20071227/50446.html

一、c#的異常處理所用到關(guān)鍵字?

try 用于檢查發(fā)生的異常,并幫助發(fā)送任何可能的異常。?

catch 以控制權(quán)更大的方式處理錯誤,可以有多個catch子句。?

finally 無論是否引發(fā)了異常,finally的代碼塊都將被執(zhí)行。?

throw 用于引發(fā)異常,可引發(fā)預(yù)定義異常和自定義異常。?

二、c#異常處理的格式?

try?

{?

程序代碼塊;?

}?

catch(exception e)?

{?

異常處理代碼塊;?

}?

finally?

{?

無論是否發(fā)生異常,均要執(zhí)行的代碼塊;?

}?



三、異常處理實(shí)戰(zhàn)?

一個除數(shù)和零的簡單例子:?

public class divisoriszero?

{?

private static void main()?

{?

int dividend=10;?

int divisor1=0;?

int divisor2=5;?

int dividevalue;?

try?

{?

dividevalue=dividend/divisor1; //(1)?

//dividevalue=dividend/divisor2; //(2)?

system.console.writeline("dividevalue={0}",dividevalue);//(3)這一行將不會被執(zhí)行。?

}?

catch?

{?

system.console.writeline("傳遞過來的異常值為:{0}",e);?

}?

finally?

{?

system.console.writeline("無論是否發(fā)生異常,我都會顯示。");?

}?

}?

}?



注:(1)行被執(zhí)行則會拋出一個異常,如果沒有catch語句,程序會異常終止,使用不帶參數(shù)的catch子句,則可以捕獲任意類型的異常。?

如果將(1)行注釋掉,啟用(2)行,這意味該程序運(yùn)行時不會出現(xiàn)異常,從輸出可知,finally代碼塊仍將被執(zhí)行。?



可以給try語句提供多個catch語句,以捕獲特定的異常,如上例中:0作為除數(shù)則會引發(fā)dividebyzeroexception類型的異常,上例中的catch語句可以作如下修改:?

catch(dividebyzeroexception e)?

{?

system.console.writeline("零不能作為除數(shù)!異常值為:\n{0}",e);?

}?

catch(exception e)?

{?

system.console.writeline("并非\零作為除數(shù)引發(fā)的異常\"!異常值為:\n{0}",e);?

}?

為什么還要加上一個catch(exception e)子句呢?原因很簡單,catch(dividebyzeroexception e)子句只能捕獲特定的異常,try內(nèi)的程序代碼可能還會產(chǎn)生其它的異常,這些異常只能由catch(exception e)來捕獲了。?

下表給出了一些常見的異常:?



system名稱空間中常用的異常類?



異常類名稱 簡單描述?

memberaccessexception 訪問錯誤:類型成員不能被訪問?

argumentexception 參數(shù)錯誤:方法的參數(shù)無效?

argumentnullexception 參數(shù)為空:給方法傳遞一個不可接受的空參數(shù)?

arithmeticexception 數(shù)學(xué)計(jì)算錯誤:由于數(shù)學(xué)運(yùn)算導(dǎo)致的異常,覆蓋面廣。?

arraytypemismatchexception 數(shù)組類型不匹配?

dividebyzeroexception 被零除?

formatexception 參數(shù)的格式不正確?

indexoutofrangeexception 索引超出范圍,小于0或比最后一個元素的索引還大?

invalidcastexception 非法強(qiáng)制轉(zhuǎn)換,在顯式轉(zhuǎn)換失敗時引發(fā)?

multicastnotsupportedexception 不支持的組播:組合兩個非空委派失敗時引發(fā)?

notsupportedexception 調(diào)用的方法在類中沒有實(shí)現(xiàn)?

nullreferenceexception 引用空引用對象時引發(fā)?

outofmemoryexception 無法為新語句分配內(nèi)存時引發(fā),內(nèi)存不足?

overflowexception 溢出?

stackoverflowexception 棧溢出?

typeinitializationexception 錯誤的初始化類型:靜態(tài)構(gòu)造函數(shù)有問題時引發(fā)?

notfinitenumberexception 無限大的值:數(shù)字不合法?



四、定義自己的異常類?

除了預(yù)定義的異常外,我們還可以創(chuàng)建自己的異常,過程比較簡單:?

㈠聲明一個異常,格式如下:?

class exceptionname:exception{}?

㈡引發(fā)自己的異常:?

throw(exceptionname);?



看一個例子:?

class iamsecondgrade:system.exception{}//聲明異常?



class secondgrade?

{?

public static int mul(int first,int second)?

{?

if(first>100||second>100)?

throw new iamsecondgrade();//引發(fā)異常?

return (first*second);?

}?



public static void main()?

{?

int mul_value;?

try?

{?

mul_value=mul(ArrayArray,56);?

system.console.writeline("ArrayArray與56積為:{0}",mul_value);?

mul_value=mul(101,4);?

system.console.writeline("出現(xiàn)異常,這行是不會被執(zhí)行的。");?

}?

catch(iamsecondgrade)//捕獲自定義的異常?

{?

system.console.writeline("我才上二年級,超過100的乘法我不會。嘿嘿,我自定義的異常。");?

}?

catch(system.exception e)?

{?

system.console.writeline("非自定義異常。其值為:{0}",e);?

}?



}?

}?

?

轉(zhuǎn)載于:https://www.cnblogs.com/123ing/p/3789186.html

總結(jié)

以上是生活随笔為你收集整理的C#异常处理机制初步的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。