Microsoft: Exception 類別
程式執行期間發生的錯誤,會丟出異常或丟出例外。
例外處理是所有開發工程師必學的,以下介紹比較常見的 Exception
- 確認例外的什麼類型
- 透過debug來檢查是第幾行造成異常
Table of Contents
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="顯示/隱藏內容目錄"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span>
NullReferenceException
當嘗試對Null 物件取值時,所擲回的例外狀況。
尋找字串裡,B在第幾個位置出現,由於name是null, 所以程式時會丟出例外,範例如下:
string name = null;
int position = name.IndexOf('B');錯誤如下:
Unhandled Exception:
System.NullReferenceException: Object reference not set to an instance of an objectDivideByZeroException
嘗試將整數或 Decimal 值除以零時,所擲回的例外狀況。
分母不可以為零,程式在執行時, 會丟出例外,範例如下:
int i = 100;
int ans = i/0;錯誤如下:
System.DivideByZeroException: Attempted to divide by zero.ArgumentOutOfRangeException
引數超出有效值的範圍。
string value = "0123456789";
// 字串長度10, 叫用 Substring時, 傳入 100, 會丟出 ArgumentOutOfRangeException 例外
string result = value.Substring(100);錯誤訊息如下:
System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string.ArgumentNullException
ArgumentNullException
當 Null 參考 (在 Visual Basic 中為 Nothing) 傳遞給不接受其為有效引數的方法時,所擲回的例外狀況。
不允許參數是null時,就會丟出ArgumentNullException
FormatException
引數格式無效或複合格式字串格式不正確時所擲回的例外狀況。
此用法是想使用字串插值,但因為語法錯誤,導致異常。
string template = "user_name: {bocky}";
string result = string.Format(template, "bocky");錯誤如下:
System.FormatException: Input string was not in a correct format.try…catch…finally
不要太依賴,若是能在開發時就想到需要檢查/判斷的地方,就先做好。
try
{
//程式執行區或可能發生異常的地方
}
catch (Exception ex)
{
//例外的處理方法,如秀出警告
}
finally
{
//無論是否有發生例外事件,都會執行這區塊
}