2008-09-22 30 views
112

Tôi muốn Visual Studio phá vỡ khi một ngoại lệ được xử lý xảy ra (tức là tôi không chỉ muốn xem thông báo "Cơ hội đầu tiên", tôi muốn gỡ lỗi ngoại lệ thực).Visual Studio: Làm cách nào để thoát khỏi các ngoại lệ được xử lý?

ví dụ: Tôi muốn trình gỡ lỗi để phá vỡ tại ngoại lệ:

try 
{ 
    System.IO.File.Delete(someFilename); 
} 
catch (Exception) 
{ 
    //we really don't care at runtime if the file couldn't be deleted 
} 

Tôi đã xem qua these ghi chú cho Visual Studio.NET:

1) Trong VS.NET đi đến Debug Menu >> "Exceptions ..." >> "Common Language Runtime Exceptions" >> "Hệ thống" và chọn "System.NullReferenceException"

2) Ở dưới cùng của hộp thoại có là "Khi các ngoại lệ được ném:" hộp nhóm, chọn "Chia nhỏ vào trình gỡ lỗi "

3) Chạy kịch bản của bạn. Khi ngoại lệ được ném, trình gỡ lỗi sẽ dừng lại và thông báo cho bạn với một hộp thoại cho nói điều gì đó như: "đã được ném [Break] [Tiếp tục] ' ' Một ngoại lệ của kiểu" System.NullReferenceException

Nhấn [Break]. Thao tác này sẽ đưa bạn vào dòng mã gây ra sự cố .

Nhưng họ không áp dụng cho Visual Studio 2005 (không có Exceptions tùy chọn trên gỡ lỗi menu).

Có ai biết nơi tìm hộp thoại tùy chọn này trong Visual Studio rằng "Khi ngoại lệ được ném" hộp nhóm, với các tùy chọn để "lao vào debugger"?

Cập nhật: Vấn đề là gỡ lỗi trình đơn của tôi không có một Exceptions mục. Tôi đã tùy chỉnh menu để thêm thủ công.

+5

Trong VS2015 nó là dưới Debug-> Windows-> Exception Cài đặt – PeterVermont

Trả lời

127

Với một giải pháp mở, đi đến Debug - Exceptions (Ctrl +D, E) tùy chọn trình đơn. Từ đó, bạn có thể chọn để phá vỡ các trường hợp ngoại lệ bị bỏ qua hoặc Người dùng không được giải quyết.

EDIT: Ví dụ của tôi được thiết lập với cấu hình C# "có lẽ nó không có cho các cấu hình khác?

+6

i chỉ cần không có một lựa chọn như vậy. Điều đó sẽ giải thích sự nhầm lẫn của tôi. –

+1

Bạn có thiếu menu Gỡ lỗi hoàn toàn không? –

+26

tôi có trình đơn gỡ lỗi, nhưng không có tùy chọn Ngoại lệ. tôi đã tùy chỉnh menu để thêm nó theo cách thủ công; phím tắt cũng hoạt động theo cách (Ctrl + Alt + E) –

32

Có một cửa sổ 'ngoại lệ' trong VS2005 ... thử Ctrl +Alt +E khi gỡ lỗi và click vào hộp kiểm 'Ném' cho ngoại trừ bạn muốn dừng trên.

+0

Đó chính xác là những gì tôi muốn. Cái đó ở đâu trong menu? Đối với cuộc sống của tôi, tôi không thể tìm thấy nó. –

+0

Phím tắt có thể thay đổi theo cấu hình (nhà phát triển C#, nhà phát triển C++, v.v.) –

+1

Tôi có một mục menu: Gỡ lỗi -> Ngoại lệ. Điều này là với VS2005 Professional. Bạn đang chạy phiên bản Express? –

5

Kiểm tra this out trên msdn, nó giải thích cách thiết lập tính năng này.

Về cơ bản, đây là các bước (trong gỡ lỗi):

  1. Trên menu Debug, nhấn vào Exceptions.

  2. Trong hộp thoại Ngoại lệ, chọn Được ném cho toàn bộ danh mục ngoại lệ, ví dụ: Ngoại lệ thời gian chạy ngôn ngữ chung.

    -hoặc-

    Mở rộng nút cho một chủng loại hợp ngoại lệ, ví dụ, Common Language Runtime Exceptions, và chọn Ném cho một ngoại lệ đặc biệt trong loại đó.

2

Kỹ thuật tôi sử dụng giống như sau. Xác định biến toàn cục mà bạn có thể sử dụng cho một hoặc nhiều lần thử chặn tùy thuộc vào những gì bạn đang cố gỡ lỗi và sử dụng cấu trúc sau:

if(!GlobalTestingBool) 
{ 
    try 
    { 
     SomeErrorProneMethod(); 
    } 
    catch (...) 
    { 
     // ... Error handling ... 
    } 
} 
else 
{ 
    SomeErrorProneMethod(); 
} 

Tôi thấy điều này mang lại cho tôi sự linh hoạt hơn một chút về thử nghiệm bởi vì vẫn còn một số ngoại lệ mà tôi không muốn IDE phá vỡ.

+2

Đây là một kỹ thuật hữu ích - nó biến ngoại lệ được xử lý thành ngoại lệ chưa được xử lý, do đó trình gỡ rối tự động dừng lại. Tôi không chắc chắn lý do tại sao nó đã được downvoted, trừ khi nó là không có cách nào tốt để thiết lập GlobalTestingBool của bạn. Một lựa chọn khác có thể tốt hơn là sử dụng Debugger.IsAttached. –

+0

Bạn sẽ phải thêm điều này xung quanh mọi try/catch và biên dịch lại mã của bạn. Không phải là rất hữu ích nếu bạn đã ở giữa gỡ lỗi một cái gì đó. – Max

0

Tài liệu trực tuyến có vẻ hơi không rõ ràng, vì vậy tôi chỉ thực hiện một bài kiểm tra nhỏ. Chọn để phá vỡ Thrown từ hộp thoại Exceptions khiến cho chương trình thực thi phá vỡ bất kỳ ngoại lệ nào, được xử lý hoặc không được xử lý. Nếu bạn chỉ muốn xử lý các trường hợp ngoại lệ được xử lý, có vẻ như sự truy đòi duy nhất của bạn là đi qua mã của bạn và đặt các điểm ngắt trên tất cả các ngoại lệ được xử lý của bạn. Điều này có vẻ hơi quá mức, do đó, có thể tốt hơn nếu thêm câu lệnh gỡ lỗi bất cứ khi nào bạn xử lý một ngoại lệ. Sau đó, khi bạn thấy đầu ra đó, bạn có thể đặt điểm ngắt tại dòng đó trong mã.

5

Hãy cho tôi một thời gian để tìm địa điểm mới cho cài đặt triển vọng, do đó có câu trả lời mới.

Vì Visual Studio 2015 bạn kiểm soát ngoại lệ nào sẽ dừng trong Cửa sổ cài đặt ngoại lệ (Debug-> Windows-> Cài đặt ngoại lệ).

Cách đơn giản nhất để xử lý ngoại lệ tùy chỉnh là chọn "tất cả ngoại lệ không có trong danh sách này".

1

Từ Visual Studio 2015 và trở đi, bạn cần phải đi đến các "ngoại lệ Cài đặt" hộp thoại (Ctrl + Alt + E) và kiểm tra ra khỏi "Common Language Runtime Exceptions" (hoặc một cụ thể bạn muốn có nghĩa là ArgumentNullException) để làm cho nó phá vỡ trên xử lý ngoại lệ.

Bước 1 Step 1 Bước 2 Step 2

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