2013-04-11 44 views
23

Tôi muốn xem chi tiết ngoại lệ trong trình gỡ lỗi studio trực quan mà không gán biến cho ngoại lệ. Hiện nay tôi phải viết một cái gì đó như thế này:Cách xem chi tiết ngoại lệ trong trình gỡ rối mà không gán biến cho ngoại lệ?

try 
{ 
    //some code 
} 
catch (SecurityException ex) 
{ 
    //some code or ever no any code 
} 

Visual studio ném một lỗi chỉ ra rằng biến cũ không bao giờ được sử dụng, nhưng tôi cần biến này để xem chi tiết ngoại lệ khi gỡ lỗi.

CẬP NHẬT: Tôi biết cách triệt tiêu biến lỗi VS 'không bao giờ được sử dụng', sự cố là nhìn thấy ngoại lệ bên trong đồng hồ mà không có biến này. biến ngoại lệ $ bởi @VladimirFrolov hoặc trợ giúp ngoại lệ của @MarcGravell là một câu trả lời.

+0

Thêm ném cũ; trong bắt của bạn? Hoặc Console.WriteLine (ex.getMessage()); hoặc bất kỳ giá trị nào khác – Rob

Trả lời

50

Bạn có thể thấy ngoại trừ của bạn trong danh sách Người dân địa phương hoặc sử dụng $exception Watch danh sách:

try 
{ 
    // some code 
} 
catch (SecurityException) 
{ // place breakpoint at this line 
} 
+0

Điều này vẫn đúng với VS.NET 2017? Dường như không hoạt động với vs2017 –

+0

@FrederikGheysels, tôi luôn sử dụng '$ exception' trong VS2017 và nó hoạt động tốt. – Andrew

1

chỉ cần viết

catch 
{//set breakpoint here 
} 
2

Bạn có thể sử dụng một chức năng từ Visual Studio.

Gỡ lỗi => Ngoại lệ => Kiểm tra "Ngoại lệ thời gian chạy ngôn ngữ chung"

Vậy đó. Hy vọng nó giúp.

2

Để tránh nhận được cảnh báo: "Các biến 'cũ' được khai báo nhưng không bao giờ sử dụng" trong một tuyên bố bắt, làm như sau:

try 
{ 
} 
catch (Exception) 
{ 
    // set break point 
} 

Hoặc sử dụng System.Diagnostics.Debug.WriteLine() hoặc Enable truy tìm hoặc gỡ lỗi để sử dụng một trace listener .

+2

Bạn nhận ra đây không phải là những gì Danila đang hỏi, đúng không? – Andrew

+0

Điều này thậm chí không cố gắng trả lời câu hỏi được hỏi. – gdoron

2

sử dụng

catch (SecurityException /*without variable*/) 
{/*break Point*/ 
    //some code or ever no any code 
} 

hoặc

catch /*without parameter*/ 
{/*break Point*/ 
    //some code or ever no any code 
} 

nhưng tôi nghĩ rằng đây là những gì bạn có nghĩa là

catch (SecurityException ex) 
    { 
     MessageBox.Show(ex.ToString()); //for Winforms 
     Console.WriteLine(ex); //for console 
    } 
8

Bạn không cần phải làm bất cứ điều gì: chỉ cần đặt một breakpoint bên trong catch (hoặc trên catch và bước một lần vào khối) và bạn sẽ thấy lời mời xem trợ giúp ngoại lệ. Này làm việc cho trần truồng catch hoặc cho loại hình cụ thể khối catch(SecurityException):

enter image description here

mang đến cho bạn tất cả mọi thứ:

enter image description here

+0

Vấn đề của tôi với hộp thoại này là nếu có thư trong bộ sưu tập "Dữ liệu", tôi không thể xem chúng qua hộp thoại này. Là có một cách? –

+5

Có thể Visual Studio 2015 không có tính năng này nữa không? Ít nhất nó chỉ đi vào khối 'catch' mà không cung cấp bất kỳ trình trợ giúp nào, giống như với bất kỳ dòng mã nào khác, bất kể tôi đặt điểm dừng ở đâu. – Andrew

+1

@Andrew đây là những gì tôi đã thấy là tốt. Tôi hỏi về nó ở đây: https://stackoverflow.com/questions/47872167/where-did-the-exception-helper-go-for-visual-studio-2015 –

Các vấn đề liên quan