例外處理
- 例外
Ex: 除以分母
int x = 0;
int y = 123;
Console.WriteLine("{0} 除以 {1} 等於 {2}" ,x, y, y/x);
- 例外處理
(1)接收例外訊息
語法 |
---|
try
{
//錯誤的邏輯、流程或是變數偵錯的內容
}
catch (Exception ex)
{
//拋出錯誤
}
|
語法 |
---|
try
{
//錯誤的邏輯、流程或是變數偵錯的內容
}
catch (Exception ex)
{
//拋出錯誤
}finally
{
//不管怎樣,都會做到此區塊
}
|
加上例外處理 :
int x = 0;
int y = 123;
try
{
Console.WriteLine("{0} 除以 {1} 等於 {2}", x, y, y / x);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
- 例外類別 :
Name | Description |
---|---|
ApplicationException | 使用者自訂例外類別,如果想要自訂類別可以繼承這個類別實作 |
SystemException | 系統本身提供的例外類別,像DivideByZeroException或是ArithmeticException |
IsoLatedStorageException | 使用在IO系統中,隔離儲存作業失敗的例外情況 |
SUDSGeneratorException | WSDL例外處理 |
InvalidActiveXStateException | ActiveX控制項相關例外資訊 |
- 拋出例外訊息方法:
(1) Message :
回傳一個字串,其中表示例外訊息,利用這個屬性可以取得特定的狀況
相關訊息說明。
(2) StackTrace :
紀錄此例外的方法,拋出錯誤的堆疊。
(3) TargetSit:
丟出例外的方法名稱。
(4) Source :
取得錯誤丟出例外的應用程式或是物件名稱。
int x = 0;
int y = 123;
try
{
Console.WriteLine("{0} 除以 {1} 等於 {2}", x, y, y / x);
}
catch (Exception ex)
{
Console.WriteLine("例外訊息:{0}", ex.ToString());
Console.WriteLine("堆疊:{0}", ex.StackTrace);
Console.WriteLine("程式名稱:{0}", ex.Source);
Console.WriteLine("方法名稱:{0}", ex.StackTrace);
}
(2)自訂例外方法並拋出例外
當我們自訂例外類別時,我們需要自己撰寫邏輯去拋例外
語法 |
---|
throw new 例外類別名稱()
|
- 自訂例外類別
var Emp = new { name = "Jack" , salary=-1000f };
try
{
if (Emp.salary < 0)
{
throw new MyException(); //拋出例外
}
Console.WriteLine("員工姓名:" +Emp.name);
}
catch (MyException myEx)
{
Console.WriteLine(myEx);
}
//自訂錯誤類別
class MyException :ApplicationException
{
private String errorMessage ;
public MyException()
{
ZeroError();
}
public void ZeroError()
{
this.errorMessage = "薪水不為零" ;
}
public override string ToString()
{
return errorMessage ;
}
}
留言
張貼留言