日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代码重构-异常处理

發布時間:2024/4/14 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代码重构-异常处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

按照產生異常的原因是否明確,來區分異常的處理方式。避免在代碼中全部用try-catch 去檢測,甚至使用多重try-catch嵌套處理。

異常明確,可以檢測。

比如取錢,很顯然輸入的取錢金額不能大于余額(信用卡不在考慮之列),這種錯誤是可以檢測的,可排除的。

public void Withdraw (decmal amount){

if(amount>_balance){

throw new ArgumentException("amount too large");

}

_balance-=amount;

}

這種程序,參數如果錯誤,就會拋出異常。所以調用時,做好代碼檢查就行了,可以不用try-cath去捕獲

調用:

public void main()

{

if(account.CanWithdraw(amount)){

??? //withdraw money

}

else{

???? console.WriteLine("balance not enough");

}

}

又比如:文本框中要求錄入數字,完全不需要使用try-catch 去檢測

(你是否這樣在寫?)

public bool checkNumber(string input){

bool isNumber =false;

try{

????? int num = int.parse(input);

????? isNumber = true;

}

catch(Exception ex){

????? console.writeLine(ex.Message);

}

return isNumber;

}

代碼改為:

public bool checkNumber(string input){

return Regex.IsMatch(value, @"^[+-]?/d*[.]?/d*$");

}

?

異常不明確,不可檢測。

例如:數據庫操作,鏈接數據庫查詢。如果數據庫服務器當機,或者傳遞的鏈接字符串參數錯誤,正常的代碼也會查詢失敗,會拋出鏈接異常等錯誤。像這類異常,具有不確定性,不好檢查。(使用try-catch,對拋出的錯誤進行捕獲)。

pulic void Connection(string strConn){

try{

???? SqlConnection conn = new SqlConection(strConn);

??? //...

}

catch(SqlException ex){

????? console.writeLine(ex.Message);

}

}

還比如:文件操作,也需要使用try-catch捕獲。

轉載于:https://www.cnblogs.com/iampkm/archive/2012/08/28/2660465.html

總結

以上是生活随笔為你收集整理的代码重构-异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。