Tôi đang sử dụng sự kiện FirstChanceException để ghi lại chi tiết về bất kỳ trường hợp ngoại lệ nào bị ném.AppDomain.FirstChanceException và ngoại lệ tràn ngăn xếp
static void Main(string[] args)
{
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
Console.WriteLine("Inside first chance exception.");
};
throw new Exception("Exception thrown in main.");
}
Điều này hoạt động như mong đợi. Nhưng nếu một ngoại lệ được ném bên trong xử lý sự kiện, một tràn ngăn xếp sẽ xảy ra kể từ khi sự kiện sẽ được nâng lên đệ quy.
static void Main(string[] args)
{
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
throw new Exception("Stackoverflow");
};
throw new Exception("Exception thrown in main.");
}
Làm cách nào để xử lý các ngoại lệ xảy ra trong trình xử lý sự kiện?
Edit:
Có một vài câu trả lời gợi ý rằng tôi quấn mã bên trong xử lý sự kiện trong một khối try/catch, nhưng điều này không làm việc kể từ khi sự kiện này được nâng lên trước khi ngoại lệ có thể được xử lý.
static void Main(string[] args)
{
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
try
{
throw new Exception("Stackoverflow");
}
catch
{
}
};
throw new Exception("Exception thrown in main.");
}
Chỉ cần sử dụng một lĩnh vực bool để ngăn chặn đệ quy. –
Tôi không hiểu tại sao bạn lại muốn điều này. Ngoại lệ cơ hội đầu tiên được xử lý. Tại sao bạn lại ném một cái khác? – leppie
Tôi không cố ý ném một số khác. Điều gì xảy ra nếu tôi đang cố gắng để đăng nhập lỗi đó và một ngoại lệ được ném trong khi tôi đang cố gắng để đăng nhập thông tin đó? – nivlam