我需要使用戶能夠將可能的異常消息發送給我,我通過將主要方法包裝到try-catch中顯示,但這也迫使我看到自定義消息而不是Visual Studio的異常窗口。如何使用預處理指令來檢查應用程序是否在Visual Studio中運行?
這就是爲什麼我需要使用一些預處理指令以某種方式在VS中運行解包方法並在不包裝時進行包裝。
我需要使用戶能夠將可能的異常消息發送給我,我通過將主要方法包裝到try-catch中顯示,但這也迫使我看到自定義消息而不是Visual Studio的異常窗口。如何使用預處理指令來檢查應用程序是否在Visual Studio中運行?
這就是爲什麼我需要使用一些預處理指令以某種方式在VS中運行解包方法並在不包裝時進行包裝。
無需使用預處理指令可以通過在if
語句附加的調試檢查來完成:
static void Main(string[] args)
{
if (System.Diagnostics.Debugger.IsAttached)
{
/* application code */
}
else
try
{
/* application code */
}
catch (Exception ex)
{
// custom exception handling
}
}
正如鐵人鬼不建議使用System.Diagnostics.Debugger.IsAttached
如果這個布爾屬性返回true,則在Visual Studio IDE(或其他一些調試!)連接的過程,在這種情況下 - 假設你的Visual Studio下運行。 -
我如何使用它? – user1306322
main(){
try {
// your app code here
}
catch (Exception ex){
if(System.Diagnostics.Debugger.IsAttached)
{
throw;
} else {
// your exception handling here.
}
}
稍後我會修改格式,但是這應該讓您得到正常的異常處理(而不會丟失原始異常堆棧跟蹤),同時該異常處理程序捕獲的字段中有大多數異常。 –
我認爲,我實際上失去了堆棧跟蹤。例外直接指向'throw'。 – user1306322
看看異常的細節。自身拋出不會重新創建異常。 (你不想拋出前;只是拋出;) –
爲什麼不檢查一個附加的調試和重新拋出,而不是進入你的主要的例外處理程序? –
我還不知道該怎麼做。 – user1306322