程式在執行的過程中難免會遇到意外的狀況發生,這時該怎麼辦呢?現實生活中我們可能就會去保保險,那麼程式怎麼辦?有一個例外處理try...catch可以幫我們解決這個問題,甚至還可以使用throw可以丟出例外,例外處理部分是可以透過程式的規劃來了解是哪邊出問題的哦!怎麼說呢?我們來看一下例子:
·try...catch基本使用:
try
{
//原本程式要執行的內容
//例如:label1.Text=”程式執行內容”;
}
catch
{
//當try裡面的內容遇到任何意外就會執行這裡的內容(ex:記憶體不足、檔案路徑錯誤、找不到值...等等)
}
·多了finally 使用:
try
{
//程式內容敘述
}
catch
{
//意外狀況發生時所執行的程式
}
finally
{
//無論有無意外狀況發生都一定會執行的程式
}
這邊的finally出現就表示有可能會出現這樣的情形:
1.try...catch...finally
2.try...finally
也就是說try後面跟著的不是catch就是finally。
·那麼例外處理的catch用法也還有可以針對不同的例外個別去做處理
像是:
try
{
...
}
catch(OutOfMemoryException)
{
//記憶體不足時的例外狀況
}
catch(IndexOutOfRangeException)
{
//使用陣列或集合以外的索引值來做存取項目的例外狀況
}
當然例外狀況不只有這兩個還有很多,這邊就先列舉幾個我認為比較常用的
當然還有很多其他的例外類型,可以在程式中找尋像下面這張圖一樣可以找到我們想要的類型哦!
·丟出例外throw
若有特殊例外狀況想要自訂例外時可以使用throw用法,指定例外類型時也可以使用throw用法。
(1)指令例外類型用法
(2)自訂例外類型用法
Step1:先建立自訂例外類型的類別,由於會繼承ISerializable,因此最上面要多新增using System.Runtime.Serialization
Step2:主程式使用throw new自訂例外類型的類別名稱
直接來看例子:
由於遇到throw時程式會自動跳出,後面的程式就不會執行了,我們就一一來看一下他們執行狀況有沒有跟我們所自訂的顯示內容一樣。
可以看到跳出的例外狀況的小視窗,裡面的內容也就會是我們自訂義會顯示的內容。當沒有使用try...catch方法時程式就會像這個例子一樣會中斷程式哦!
所以說當例外狀況產生時有try...catch這個好方法協助我們抓出程式的意外狀況、錯誤情形,好讓我們可以快速知道錯誤點在哪邊呢!