Trong một ứng dụng winforms, trong sự kiện Load của một hình thức, thêm dòng sau:thất bại Im lặng trong C#, dường như ngoại lệ unhandled mà không sụp đổ chương trình
throw new Exception();
và chạy ứng dụng. Nó chạy mà không có vấn đề gì. Điều này được gọi là một sự im lặng thất bại, bạn có thể thử thêm các hộp thông báo trước và sau, và bạn sẽ sớm tìm ra rằng thay vì làm rơi ứng dụng, câu lệnh throw chỉ thoát khỏi sự kiện Load.
Tôi chắc chắn không cần giải thích mức độ nguy hiểm của điều này.
Tôi đã tự hỏi trong lý do (có thể là lịch sử) đằng sau hành vi đáng sợ này. Tôi chắc chắn đó không phải là quyết định thiết kế, có lẽ là không có lựa chọn hoặc lười biếng. Có ai biết không?
Sẽ rất vui nếu có ai đó có thể chỉ cho tôi danh sách các sự kiện có thể gây ra lỗi thất bại.
Dưới đây là một đoạn mã của tôi - Tôi không có ý tưởng làm thế nào nó có thể giúp đỡ - nhưng, ở đây nó là:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Form f = new Form();
f.Load += new EventHandler((x, y) => { throw new Exception(); });
Application.Run(f);
}
}
}
EDIT Có vẻ như nó không happend cho mọi người. Tôi sử dụng: fw 3.5, winforms, vs 2008, vista x64, dự án sạch mới của winforms, với mã được đề cập ở trên.
Bạn có thể giải thích thêm về vấn đề của mình bằng một đoạn trích từ trình xử lý sự kiện OnLoad cho biểu mẫu của bạn không. Ngoài ra, bạn có trình xử lý UnhandledException trong miền ứng dụng này không? Nếu đây là hình thức chính của ứng dụng và nó không thể tải vì bạn đã ném một ngoại lệ chưa được giải quyết, bạn đã mong đợi điều gì xảy ra? Tôi nghi ngờ xử lý sự kiện unhandled của bạn sẽ được gọi trong trường hợp này. –
Bạn đang sử dụng phiên bản cửa sổ nào? –
Tôi thực sự đã bỏ phiếu cho câu hỏi trước của bạn xuống một lần nữa, nó được viết kém và kiêu ngạo ... – Blindy