国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C#異常處理機制初步

2024-07-21 02:19:21
字體:
來源:轉載
供稿:網友
今天學習了c#的異常處理機制,現將所學總結如下:

一、c#的異常處理所用到關鍵字

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

catch 以控制權更大的方式處理錯誤,可以有多個catch子句。

finally 無論是否引發了異常,finally的代碼塊都將被執行。

throw 用于引發異常,可引發預定義異常和自定義異常。

二、c#異常處理的格式

try

{

程序代碼塊;

}

catch(exception e)

{

異常處理代碼塊;

}

finally

{

無論是否發生異常,均要執行的代碼塊;

}



三、異常處理實戰

一個除數和零的簡單例子:

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)這一行將不會被執行。

}

catch

{

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

}

finally

{

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

}

}

}



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

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



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

catch(dividebyzeroexception e)

{

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

}

catch(exception e)

{

system.console.writeline("并非/''零作為除數引發的異常/"!異常值為:/n{0}",e);

}

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

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



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



異常類名稱 簡單描述

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

argumentexception 參數錯誤:方法的參數無效

argumentnullexception 參數為空:給方法傳遞一個不可接受的空參數

arithmeticexception 數學計算錯誤:由于數學運算導致的異常,覆蓋面廣。

arraytypemismatchexception 數組類型不匹配

dividebyzeroexception 被零除

formatexception 參數的格式不正確

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

invalidcastexception 非法強制轉換,在顯式轉換失敗時引發

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

notsupportedexception 調用的方法在類中沒有實現

nullreferenceexception 引用空引用對象時引發

outofmemoryexception 無法為新語句分配內存時引發,內存不足

overflowexception 溢出

stackoverflowexception 棧溢出

typeinitializationexception 錯誤的初始化類型:靜態構造函數有問題時引發

notfinitenumberexception 無限大的值:數字不合法



四、定義自己的異常類

除了預定義的異常外,我們還可以創建自己的異常,過程比較簡單:

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

class exceptionname:exception{}

㈡引發自己的異常:

throw(exceptionname);



看一個例子:

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



class secondgrade

{

public static int mul(int first,int second)

{

if(first>100||second>100)

throw new iamsecondgrade();//引發異常

return (first*second);

}



public static void main()

{

int mul_value;

try

{

mul_value=mul(99,56);

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

mul_value=mul(101,4);

system.console.writeline("出現異常,這行是不會被執行的。");

}

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

{

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

}

catch(system.exception e)

{

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

}



}

}



今天學習了一些異常處理的重要特性,還有許多其它的特性,有待以后努力

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 女性| 平和县| 牡丹江市| 新源县| 绥阳县| 樟树市| 湟中县| 亳州市| 溧水县| 南汇区| 城固县| 阿拉善右旗| 抚顺县| 额尔古纳市| 九龙县| 承德市| 衢州市| 东至县| 定襄县| 磴口县| 南通市| 甘肃省| 镇远县| 洛隆县| 开平市| 射阳县| 布尔津县| 昭苏县| 阳原县| 广丰县| 盐池县| 浮山县| 天镇县| 闽侯县| 齐齐哈尔市| 濉溪县| 新和县| 南康市| 富平县| 巴楚县| 阿城市|