iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 30
1
自我挑戰組

初心者學C#系列 第 30

Day 30:C#的異常處置 ♡〜٩( ╹▿╹ )۶〜♡

  • 分享至 

  • xImage
  •  

※以下內容皆是新手撰寫,內容可能不完全正確

30天的可愛顏文字挑戰用這篇畫下(有點慘烈的)句點~
程式寫越多就會碰上越多error,但也不必荒(跟自己講的),除掉就好ㄌ :D

最後一個主題是 異常處置(exception handling) ,為C#程式語言搬出四種關鍵字,在使用者同意的狀況下替使用者處理預料之外或其他異常的狀況(不一定成功),例如把零當分母用。可以想成異常會觸動什麼,把控制權從程式的A區塊遞給B區塊。
以下是異常處置的四個關鍵字:

  • try:標記一塊開啟某特定異常的區塊,後面接著一個或多個catch區塊
  • catch:程式中標示想處理的異常,「抓住」異常
  • finally:不論有沒有扔個異常,都會執行某組特定的敘述(例,開啟一個檔案,不論是否有異常,檔案最終都得關掉)
  • throw:有問題的時候,程式會用throw關鍵字「扔出」異常
    ※如果一個物件是從System.Exception衍生而來的,可以throw他~~:
catch(Exception yee) {
//一些程式碼
	throw yee
} 

接著是使用這些關鍵字的語法,有種寫八股文的感覺(???):

try {
//造成異常的敘述
} catch(異常名稱 a){
//負責處置異常的程式碼
} catch(異常名稱 b){
//負責處置異常的程式碼
} finally {
//需要執行的敘述
}

C#中的異常類別(exception classes)
異常用類別表示,而這些類別皆從System.Exception衍生而來。
System.ApplicationException:支援應用程式異常(使用者自己定義異常要從這個類別衍生)
System.SystemException:為所有預設系統異常(predefined system exceptions)之類基

個人認為C#處置異常這方面架構很好理解,甚至比之前提到程式碼中的各個部份好懂,程式碼原本的敘述跟處理錯誤的敘述是分開的。
使用者也可以自己定義異常:

public class SomeRandomException : Exception {
	public SomeRandomException(string message): base (message)
}
    }

寫了一個月的的C#短篇筆記(別名:可愛顏文字挑戰),覺得超級無敵累,累炸了,但真的只有逼迫自己努力不懈、狠下心不間斷的學習某個東西,才能有初步的了解。即使目前只了解到C#程式語言的皮毛,仍舊覺得能一併龐大的課業量完成這30天實在不容易。現在反而很期待外國網站上某些C#的進階教學到底會教些什麼,畢竟進階教學教的東西有些又更實用了。後會有期。

														by腐爛的阿雪

參考資料:
(a) Tutorialspoint; C# - Exception Handling
https://www.tutorialspoint.com/csharp/csharp_exception_handling.htm
(b) Microsoft; Exceptions and Exception Handling (C# Programming Guide)
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/exceptions/


上一篇
Day 29:C#的前置處理導引.*⌒☆━━―⊂(ಠ_ಠ∩)
系列文
初心者學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2020-02-03 06:03:23

恭喜完賽
辛苦了 /images/emoticon/emoticon42.gif

我要留言

立即登入留言