Tôi đang chạy mã này C# trong Visual Studio trong chế độ gỡ lỗi:Tại sao Visual Studio không hiển thị thông báo ngoại lệ khi ngoại lệ của tôi xảy ra trong một hàm tạo tĩnh?
public class MyHandlerFactory : IHttpHandlerFactory
{
private static Dictionary<string, bool> myDictionary = new Dictionary<string, bool>();
static MyHandlerFactory()
{
myDictionary.Add("someKey",true);
myDictionary.Add("someKey",true); // fails due to duplicate key
}
}
Bên ngoài của constructor tĩnh, khi tôi nhận được cho phù hợp với lỗi Visual Studio nhấn mạnh nó và bật lên một thông điệp về sự ngoại lệ . Nhưng trong constructor tĩnh tôi không nhận được thông báo như vậy. Tôi đang bước qua từng dòng, vì vậy tôi biết rằng tôi đang đi đến hàng đó và không còn nữa.
Tại sao điều này?
(Tôi không có ý tưởng nếu điều đó thực tế là lớp học của tôi thực hiện những vấn đề IHttpHandlerFactory, nhưng tôi bao gồm nó chỉ trong trường hợp.)
Đây là VS2005, Net 2.0
Edit: Tôi chỉ muốn để thêm, thực tế rằng đó là một HttpHandler hiện có vẻ quan trọng. Như các câu trả lời đã chỉ ra, hành vi mặc định là phá vỡ TypeInitializationException thay vì ngoại lệ bên trong. Tôi đã thử nghiệm một ví dụ khác mà không có HttpHandler và thấy rằng điều này khiến chương trình phá vỡ dòng đầu tiên sử dụng lớp đó. Nhưng trong trường hợp này không có dòng trong mã của tôi để phá vỡ, vì lớp chỉ được gọi là HttpHandler được chỉ định trong tệp web.config của tôi. Do đó, nó không phá vỡ ngoại lệ chút nào.
Cảm ơn câu trả lời. Tuy nhiên, các lựa chọn tôi thấy trong Debug> Exceptions ... là "C++ Exceptions", "Common Language Runtime Exceptions", "Managed Debugging Assistants", "Native Run-Time Checks", và "Win32 Exceptions". "Ngoại lệ Net" có thuộc một trong các trường hợp này không? Tôi không thể tìm thấy nó. –
@Tim Goodman - OOPS! Tôi có nghĩa là "Ngoại lệ thời gian chạy ngôn ngữ chung". Tôi sẽ cập nhật câu trả lời của mình. –
Ah có, làm cho nó phá vỡ khi ngoại lệ phổ biến thời gian chạy ngoại lệ được ném gây ra nó để phá vỡ ngoại lệ bên trong. Cảm ơn. –