軟件運行過程中,如果出現了軟件正常運行不應該出現的情況,軟件就出現了異常。這時候我們需要去處理這些異常。或者讓程序終止,避免出現更嚴重的錯誤。或者提示用戶進行某些更改讓程序可以繼續運行下去。
C#編程語言本身就為我們提供了這種異常處理機制。
C# 中的異常是對程序運行時出現的特殊情況的一種響應,比如嘗試除以零。或者試圖將一個字符串"aaa"轉換成整數。
異常提供了一種把程序控制權從某個部分轉移到另一個部分的方式。C# 異常處理時建立在四個關鍵詞之上的:try、catch、finally 和 throw。
- try:一個 try 塊標識了一個將被激活的特定的異常的代碼塊。后跟一個或多個 catch 塊。
- catch:程序通過異常處理程序捕獲異常。catch 關鍵字表示異常的捕獲。
- finally:finally 塊用於執行給定的語句,不管異常是否被拋出都會執行。例如,如果您打開一個文件,不管是否出現異常文件都要被關閉。
- throw:當問題出現時,程序拋出一個異常。使用 throw 關鍵字來完成。
語法
假設一個塊將出現異常,一個方法使用 try 和 catch 關鍵字捕獲異常。try/catch 塊內的代碼為受保護的代碼,使用 try/catch 語法如下所示:
try { // 引起異常的語句 } catch (ExceptionName e1) { // 錯誤處理代碼 } catch (ExceptionName e2) { // 錯誤處理代碼 } catch (ExceptionName eN) { // 錯誤處理代碼 } finally { // 要執行的語句 }
C#提供了很多種異常,我們在這里只要掌握最基本的異常Exception就可以啦。在catch語句中我們只處理Exception這個最基本的異常。
下面我們看一個具體的例子,來更加清楚的理解一下C#的異常處理。
你創建一個項目。解決方案名稱為Sloution22,項目名稱為Exercise22,項目類型為控制台程序。點擊Program.cs. 在里邊加入這些代碼。
我在這里簡要的說明一下這段代碼。
1. 27行-45行 我們新建了一個ExceptionTest 方法。在這個方法中要求用戶輸入一個整數。如果用戶輸入一個字符串,我們的程序會產生異常。
2. 39行 我們用throw拋出了一個我們自己定義的異常。在里邊加入了我們想傳遞的一些信息。
3. 41行-44行 finally語句是可選的。只有當需要做一些例如資源釋放的操作的時候,才是需要的。不管有沒有異常產生 finally部分都會執行。
4. 13行-23行 調用ExceptionTest方法。同時捕獲異常。
5. 16行 如果調用ExceptionTest方法出現異常,這條語句不會執行。否則正常執行。
6. 21行 輸出異常的簡要信息
7. 22行 輸出異常的詳細信息。例如出錯的代碼位置。
運行結果
1. 用戶輸入字符串,產生異常
2. 用戶輸入整數,程序正常執行
練習
1. 讀懂代碼,在關鍵的地方加上注釋
2. 查看詳細的錯誤信息,定位是哪一行代碼出現了問題。
3. 去掉第39行 throw new Exception("轉換出現異常");再次查看詳細的錯誤信息,看看哪一行代碼出現了問題。想想是什么原因。如果不明白,記得咨詢我哦。
4. finally語句一定會執行嗎?去掉main方法的try catch 語句,調試一下程序。
付費解答C#入門學習過程中碰到的各種問題。
零基礎學習C#入門,大多數的問題都可以通過自學或借助互聯網解決。
但是還是會有一些問題,不是那么容易解決,成為了你學習的絆腳石。最后甚至造成你學習的半途而廢。通常學習C#編程入門,你會遇到20到30多個你不能很容易解決的問題。
這個時候,你最需要什么呢?
對!一個專業的老師給你幫助!
你在學習本課程中,遇到任何問題都可以通過qq或email想本教程作者進行求助。
只需30元,你就可以得到本教程作者的三次專業解答。所以你只需不到300元就可以順利的完成C#入門,從此推開軟件行業的大門。
付費方式非常簡單:
用微信掃描下面的二維碼。在付款留言中留下你的qq號或email地址就可以啦。
教育不是要便宜,而是要可靠!真正聰明的人,更懂得花錢讓專業的人為自己服務,提高自己的效率。
老師qq:2040227296
老師email:2040227296@qq.com