C 異常處理

2021-08-05 19:53:07 字數 2699 閱讀 1872

參考官方文件異常和異常處理(c# 程式設計指南)

異常是最終全都派生自 c 的型別。system.exception類有幾個非常有用的屬性:

自定義異常類要繼承自system.exception, 派生類應至少定義四個建構函式

可參考part 42 - c# tutorial - custom exceptions

如下:

[serializable()]

public

class invaliddepartmentexception : system.exception

public

invaliddepartmentexception(string message) : base(message)

public

invaliddepartmentexception(string message, system.exception inner) : base(message, inner)

// a constructor is needed for serialization when an

// exception propagates from a remoting server to the client.

protected

invaliddepartmentexception(system.runtime.serialization.serializationinfo info,

system.runtime.serialization.streamingcontext context)

}

參考inner exceptions

using system;

using system.io;

class exceptionhandling

", result);

}catch (exception ex)

else}}

catch (exception ex)

" + ex.message);

//檢查內部的exception是否為null

if(ex.innerexception != null)

", ex.innerexception.message);}}

}}

如果輸入10/0,控制台輸出如下的資訊:

enter first number

10enter second number

0current or outer exception = c:\sample files\log.txt does not exist

inner exception = 嘗試除以零。

在下列條件要捕獲異常:

1.很好地理解可能會引發異常的原因,並且可以實現特定的恢復,例如當捕獲到filenotfoundexception物件時提示使用者輸入新的檔名。

2.可以建立和引發乙個新的、更具體的異常

int getint(int array, int

index)

catch(system.indexoutofrangeexception e)

}

3.想要先對異常進行部分處理,然後再將其傳遞以進行額外處理。 在下面的示例中,catch塊用於在重新引發異常之前將條目新增到錯誤日誌

try

catch (system.unauthorizedacces***ception e)

異常用於指示在執行程式時發生了錯誤。 此時將建立乙個描述錯誤的異常物件,然後使用throw關鍵字引發。 然後,執行時搜尋最相容的異常處理程式。

當存在下列一種或多種情況時,程式設計師應引發異常:

1.方法無法完成其定義的功能。例如,如果一種方法的引數具有無效的值:

static

void copyobject(sampleclass original)

}

2.根據物件的狀態,對某個物件進行不適當的呼叫。乙個示例可能是嘗試寫入唯讀檔案。 在物件狀態不允許操作的情況下,引發invalidoperationexception的乙個例項或基於此類的派生的物件。 以下為引發invalidoperationexception物件的方法的示例:

class

programlog

void writelog()

// else write data to the log and

return.

}}

3.方法的引數引發了異常。在這種情況下,應該捕獲原始異常,並建立乙個argumentexception例項。 應將原始異常傳遞給argumentexception的建構函式作為innerexception引數:

static

int getvaluefromarray(int array, int

index)

catch (system.indexoutofrangeexception ex)

}

C 異常處理

結構化異常 structured exception vs c 異常 c exception 大家都知道c 異常是c 語言的乙個特性,使用者可以使用throw的方式來丟擲異常,try catch 來捕獲異常。結構化異常是諸如,zero divided,access violations等異常,這些異...

c 異常處理

一 概述 c 自身有著非常強的糾錯能力,發展到如今,已經建立了比較完善的異常處理機制。c 的異常情況無非兩種,一種是語法錯誤,即程式中出現了錯誤的語句,函式,結構和類,致使編譯程式無法進行。另一種是執行時發生的錯誤,一般與演算法有關。關於語法錯誤,不必多說,寫 時心細一點就可以解決。c 編譯器的報錯...

C 異常處理

程式設計師常常忽視異常處理的重要性,這給他們自己的 造成相當大損害。本文將討論如何在c 中使用異常處理,並介紹在應用 中新增 片段以防止某些錯誤的一些簡單方法,這些錯誤可能導致程式異常終止。結構化異常處理 net框架提供一種標準的錯誤報告機制稱為結構化異常處理。這種機制依賴於應用中報告錯誤的異常。在...