亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

抓住一個普遍的例外真的那么糟糕嗎?

抓住一個普遍的例外真的那么糟糕嗎?

在使用FXCop分析某些舊代碼時,我想到的是,在try塊中捕獲一般的異常錯誤確實很不好,或者您是否正在尋找特定的異常。請在明信片上提出想法。
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

顯然,這是唯一的答案是“取決于”的問題之一。


它主要取決于您在哪里捕獲異常。通常,庫應該在捕獲異常時更加保守,而在程序的頂層(例如,在主方法中或在控制器的action方法的頂部等)中,捕獲的內容可以更加自由。


這樣做的原因是,例如,您不想捕獲庫中的所有異常,因為您可能掩蓋了與庫無關的問題,例如“ OutOfMemoryException”,您實際上更喜歡冒泡,以便用戶可以另一方面,如果您正在談論的是在main()方法中捕獲異常的方法,該方法捕獲異常,先顯示該異常,然后退出...好吧,在這里捕獲幾乎所有異常都是安全的。


捕獲所有異常的最重要規則是,您絕不應該默默地吞下所有異常……例如,Java中這樣的代碼:


try { 

    something(); 

} catch (Exception ex) {}

或在Python中:


try:

    something()

except:

    pass

因為這些可能是一些最難追蹤的問題。


一個好的經驗法則是,您應該只捕獲可以正確處理的異常。如果您不能完全處理異常,則應讓它冒犯給可以處理的人。


查看完整回答
反對 回復 2019-10-18
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

除非您在應用程序的前端進行一些日志記錄和清理代碼,否則我認為捕獲所有異常是不好的。

我的基本經驗法則是捕獲您期望的所有異常,而其他任何東西都是錯誤。

如果您抓住了一切并繼續前進,那有點像在汽車儀表板上的警告燈上貼上膏藥。您再也看不到了,但這并不意味著一切都OK。


查看完整回答
反對 回復 2019-10-18
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

是! (除了您應用程序的“頂部”)


通過捕獲異常并允許代碼執行繼續,您表示您知道如何處理和規避或解決特定問題。您是在說這是可恢復的情況。捕獲Exception或SystemException意味著您將捕獲諸如IO錯誤,網絡錯誤,內存不足錯誤,代碼丟失錯誤,空指針取消引用之類的問題。說您可以處理這些是一個謊言。


在一個組織良好的應用程序中,這些不可恢復的問題應在堆棧中較高的位置處理。


另外,隨著代碼的發展,您不希望函數捕獲新的異常,該異常將來會添加到被調用的方法中。


查看完整回答
反對 回復 2019-10-18
  • 3 回答
  • 0 關注
  • 456 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號