加了try-catch也能自动定位到异常代码[VS Tips]
本文來(lái)自Kevin Yang博客 作者:Kevin Yang
Visual Studio的調(diào)試功能非常強(qiáng)大。當(dāng)異常發(fā)生的時(shí)候,能夠自動(dòng)定位到異常發(fā)生的地方。但是如果你在代碼外層顯式的加上了Try-Catch異常捕獲的時(shí)候,默認(rèn)情況下,Visual Studio會(huì)直接跳到異常處理代碼塊,而不是出現(xiàn)異常的代碼行。
namespace BreakOnException{class Program
{
static void Main(string[] args)
{
try
{
Program p = null;
Console.WriteLine(p.GetHashCode());
}
catch (System.Exception ex)
{
}
}
}}
上面的代碼會(huì)拋出經(jīng)典的NullReferrenceException。但是當(dāng)你在調(diào)試狀態(tài)下運(yùn)行時(shí),Visual Studio會(huì)將代碼停在catch這一行,而不是Console.WriteLine這一行。
如果代碼簡(jiǎn)單那倒無(wú)所謂,但是假想我們的代碼是經(jīng)過(guò)層層的函數(shù)調(diào)用,最外層卻加了這么個(gè)Try-Catch,那么異常函數(shù)調(diào)用內(nèi)拋出了異常,我們也很難定位到異常出錯(cuò)的代碼(StackTrace也只能定位哪一個(gè)函數(shù)調(diào)用出錯(cuò)了)。
這個(gè)行為可以通過(guò)Debug菜單中的Exception….菜單進(jìn)行設(shè)置。
打開(kāi)此菜單,在CLR異常的Thrown列打上勾,那么以后遇到CLR的異常就不再是定位到用戶(hù)處理代碼了,而是直接停在拋出異常的代碼上。這樣可以大大方便我們調(diào)試程序的Bug。
轉(zhuǎn)載于:https://www.cnblogs.com/Top1/archive/2010/08/18/1802592.html
總結(jié)
以上是生活随笔為你收集整理的加了try-catch也能自动定位到异常代码[VS Tips]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于Linux系统中进程调度分析
- 下一篇: HDOJ 1213 HDU 1213 H