2012-10-10 17 views
0

我需要使用戶能夠將可能的異常消息發送給我,我通過將主要方法包裝到try-catch中顯示,但這也迫使我看到自定義消息而不是Visual Studio的異常窗口。如何使用預處理指令來檢查應用程序是否在Visual Studio中運行?

這就是爲什麼我需要使用一些預處理指令以某種方式在VS中運行解包方法並在不包裝時進行包裝。

+1

爲什麼不檢查一個附加的調試和重新拋出,而不是進入你的主要的例外處理程序? –

+0

我還不知道該怎麼做。 – user1306322

回答

0

無需使用預處理指令可以通過在if語句附加的調試檢查來完成:

static void Main(string[] args) 
{ 
    if (System.Diagnostics.Debugger.IsAttached) 
    { 
     /* application code */ 
    } 
    else 
     try 
     { 
      /* application code */ 
     } 
     catch (Exception ex) 
     {     
      // custom exception handling 
     } 
} 
0

正如鐵人鬼不建議使用System.Diagnostics.Debugger.IsAttached 如果這個布爾屬性返回true,則在Visual Studio IDE(或其他一些調試!)連接的過程,在這種情況下 - 假設你的Visual Studio下運行。 -

+0

我如何使用它? – user1306322

2
main(){ 
try { 
// your app code here 
} 
catch (Exception ex){ 
if(System.Diagnostics.Debugger.IsAttached) 
{ 
    throw; 
    } else { 
    // your exception handling here. 
    } 
} 
+0

稍後我會修改格式,但是這應該讓您得到正常的異常處理(而不會丟失原始異常堆棧跟蹤),同時該異常處理程序捕獲的字段中有大多數異常。 –

+0

我認爲,我實際上失去了堆棧跟蹤。例外直接指向'throw'。 – user1306322

+0

看看異常的細節。自身拋出不會重新創建異常。 (你不想拋出前;只是拋出;) –

相關問題