黑马程序员-异常介绍与处理
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------
?
? 1、? 什么是異常?
???1、程序運行時發生的錯誤。(錯誤的出現并不總是程序員的原因,有時應用程序會因為最終用戶或運行代碼的環境改變而發生錯誤。比如:1、連接數據庫時服務器停電了;2、操作文件時文件沒了、權限不足等;3、計算器用戶輸入的被除數是0;4、使用對象時對象為null;等等)
??? 2、.net為我們把“發現錯誤(try)”的代碼與“處理錯誤(catch)”的代碼分離開來。
2、異常處理的一般代碼模式:
?? 1、try{…可能發生異常的代碼…} catch{…對異常的處理…} finally{…無論是否發生異常、是否捕獲異常都會執行的代碼…}
?? 2、try塊:可能出問題的代碼。當遇到異常時,后續代碼不執行。
?? 3、catch塊:對異常的處理。記錄日志(log4net),繼續向上拋出等操作。(只有發生了異常,才會執行。)
?? 4、finally塊:代碼清理、資源釋放等。無論是否發生異常都會執行。
3、案例:int x=5;int y=0;int z=x/y; 程序運行時出錯,后續的內容無法運行。
4、程序一旦有一個功能發生異常,整個程序崩潰其他功能也無法正常運行。
5、? 錯誤的幾種形式:
1、? ?語法錯誤:語法錯誤一般編譯器會幫我們解決。
2、? ?邏輯錯誤:編譯沒問題,執行不報異常,就是結果不對。
3、異常:在運行時發生的錯誤,異常一般會導致程序崩潰。
A、 空指針異常:未將對象引用設置到對象的實例。
Person? p=new Person();
P=null;
p.Name=”yzk”;
Console.WriteLine(P.Name);
Console.ReadKey();
B、 試圖除以零異常:除數不能為0。
Int n=10;
Int m=0;
Int sum=n/m;
Console.WriteLine(sum);
Console.Readkey();
C、 輸入字符串的格式不正常
string str=”abcd”;
int n=Convert.ToInt32(str);
Console.WriteLine(n);
Console.ReadKey();
6、? catch塊的三種寫法
A、 第一種寫法,這種寫法可以捕獲所有的異常。
Catch
{
?? Console.WriteLine(“異常了?!?;
}
B、 第二種寫法,如果參數類型是:Exception,表示可以捕獲所有的異常。
catch(Exception ex)
{
???? Console.WriteLine(“異常了。{0}”,ex.Message);
}
C、 第三種寫法:根據參數類型的不同,可以捕獲不同的異常。如參數類型是:NullReferenceException,表示只能捕獲空指針異常。
Catch(NullReferenceException? ex)
{
???? Console.WriteLine(“異常了。{0}”,ex.Message);
}
注:捕獲所有異常的catch不能寫在具體異常前面。
Exception類是所有異常類的祖宗類。
7、? 異常處理代碼的其他幾種形式:
A、 try->多個catch->一個finally
B、 try->(1個或多個catch),多個catch的順序問題。沒有finally。
C、 try->finally(只能有一個),沒有catch也可以。
注意點:
A、 發生異常后,try塊中,異常代碼后的代碼不會執行。
B、 finally塊中的代碼,無論是否發生異常都會執行。
C、 finally中不能寫return語句。
D、 try中有return語句,finally也會執行。
E、? 即便沒有catch,finally中的代碼也會執行,但finally之后的代碼則不會。
8、? Exception ex異常也是對象,封裝了異常發生時的一些信息。
9、? Exception類主要屬性:Message、StackTrace、InnerException
10、?扔出自己的異常,扔:throw。抓住:catch
建議:通過邏輯判斷(if-else)減少異常發生的可能性。
--------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------
詳細請查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>
?
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------
轉載于:https://www.cnblogs.com/zxh930508/p/3544405.html
總結
以上是生活随笔為你收集整理的黑马程序员-异常介绍与处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .Net下的签名与混淆
- 下一篇: Construct Binary Tre