Home
R
Cancel

[C# 筆記] throw 和 throw ex 區別

C#中使用throw和throw ex拋出異常,但二者是有區別的。(主要區別在堆疊(stack)訊息的起始點不同) 在C#中推薦使用throw;來拋出異常;throw ex; 會將到現在為止的所有資訊清空,認為你catch到的異常已經被處理了,只不過處理過程中又拋出新的異常,從而找不到真正的錯誤來源(破壞堆疊追蹤)。 throw 時會保留較完整的堆疊追蹤(stack trace),...

[C# 筆記] try catch 語句

try-catch語句區塊是C#中用於異常處理的例外處理機制。異常是程式執行過程中可能出現的錯誤或意外情況,而try-catch語句區塊可讓您在執行程式碼時捕獲並處理這些異常。 1. try-catch語句區塊的結構 一個try-catch語句區塊通常包含以下部分: try關鍵字:用於標識需要進行異常處理的程式碼區塊。在這個程式碼區塊內,您可以放置​​可能會引發異常的程式碼。 ...

[C# 筆記] System.Exception 類別

System.Exception 類別是所有例外的共同祖先(基礎類別 Base Class),其常用的屬性有: StackTrace:是一個字串,裡面包含了發生例外當下的函式呼叫堆疊(call stack)中的所有方法名稱。 Message:描述錯誤訊息的字串。 InnerException:內部例外。如果不是 null 的話,則是引發當前例外的上一個例外。此屬性的型別也是 ...

[C# 筆記] 使用 throw 來拋出一個例外

當我們不想要採用系統預設的例外狀況顯示訊息時,可以透過throw的方式來達到客製化顯示例外訊息的目的。 throw:拋出例外 當你在程式的某處需要引發例外來中斷正常流程時,便可以使用 throw 來拋出一個例外。 void Print(string name) { if (name == null) { throw new ArgumentNullExc...

[C# 筆記] 使用 using 來釋放資源

finally 區塊裡面可以使用 reader.Dispose() 來釋放檔案資源,這是 .NET 程式很常見的寫法。其實不只是檔案,其他像是網路連線、資料庫連線等等,這些都是屬於無法由 .NET 執行環境自動回收的資源(即所謂的 unmanaged resources),故必須在寫程式的時候明確呼叫特定的方法來釋放資源。由於釋放資源是相當常見的工作,於是 .NET 基礎類別庫定義了一個介面...

[C# 筆記] 例外處理 try catch finally

C# 常見的錯誤類型 語法錯誤(Syntax error) 編譯期錯誤(Complile time error) 邏輯錯誤(Logical error) 執行期錯誤(Runtime error) 數值性錯誤(Numerical error) 結構化例外處理 try…catch…finally try...catch...finally 可以提供在try區域中擷取...

[C# 筆記] try catch 例外處理(Exception Handling)

C# 常見的錯誤類型 語法錯誤(Syntax error) 編譯期錯誤(Complile time error) 邏輯錯誤(Logical error) 執行期錯誤(Runtime error) 數值性錯誤(Numerical error) 範例1:引發例外 以下是一個會引發例外的程式,由於 x/b = 10/0 會導致嘗試以零除 (System.DivideB...

[C# 筆記] 撰寫遞迴(Recursion)程式

何謂「遞迴程式」? 遞迴程式的定義就是:「呼叫自己本身(call itself) 的函式(Function)或方法(Method)」,便可稱為遞迴(Recursion)。 方法的遞迴,就是「方法自己調用自己」。 常見的問題例如:求解N階層的問題。 一個完整的遞迴程式須必備兩種要素: 遞迴條件 終止條件 就算是遞迴,也是要有個條件跳出來,不然就會變成死循環。...

[C# 筆記] 建構函式(Constructor) & 解構函式(Destructor)

建構函式(Constructor) 初始化新物件成員 Constructor就是「建構函式」為類別的方法,當對類別進行實體化成為物件時,便會自動執行建構函式的方法,其特點: 「建構函式名稱」與「類別名稱」相同。 當對類別透過 new 進行實體化成為物件時,會自動執行建構函式內的敘述(程式碼)。 「建構函式」主要作用在於:對物件進行初始化設定。 「建構函式」可以建立多個來...

[C# 筆記] 方法參數的使用(ref、out、params)

三個高級的參數 out, ref, params ref 與 out 的差異 ref 與 out 均可以讓方法參數的傳遞以「傳參考呼叫(Call by Reference)」的方式來進行,二者主要差異在於 ref 在傳遞變數時,該實際參數變數必須要明確初始化;而out則不需要對要傳遞的變數進行初始化。 簡單一句話:使用ref必須先為變數初始化賦值,而使用out則不用。 ...