hi bất kỳ ai có thể cho tôi biết làm thế nào để viết ngoại lệ người dùng định nghĩa trong C#? Như chúng ta có trong Java chúng ta có thể viết trong C#?Cách viết ngoại lệ do Người dùng Xác định trong C#?
5
A
Trả lời
11
Thực tế cũng giống như trong Java - bạn mở rộng lớp Exception
.
Ở dạng cơ bản nhất.
public class CustomException : System.Exception
{
public CustomException()
{
}
public CustomException(string message)
: base(message)
{
}
public CustomException(string message, System.Exception innerException)
: base(message, innerException)
{
}
}
Để làm điều này, hãy thêm dữ liệu bạn muốn chụp bằng cách sử dụng trường hoặc thuộc tính.
Không quan tâm, trước khi trả lời câu hỏi này, tôi đã kiểm tra Thiết kế Microsoft Guildlines về Ngoại lệ tùy chỉnh. Designing Custom Exceptions (MSDN)
- Tránh phân cấp không gian tên sâu.
- Nếu có thể, lấy được từ một ngoại lệ cơ sở chung được cung cấp, nghĩa là,
ArgumentException
. HOWEVER Không lấy được từApplicationException
. Nó không có hại, nó không phải là điểm khi làm như vậy. MSDN Blog Post on ApplicationException. - Sử dụng hậu tố "Ngoại lệ".
- Đặt ngoại lệ theo thứ tự bằng cách triển khai giao diện
ISerializable
. Rõ ràng là một ngoại lệ phải được serializable để hoạt động chính xác trên miền ứng dụng và từ xa các ranh giới. - Lưu thông tin bảo mật nhạy cảm trong trạng thái ngoại lệ riêng tư, thêm thuộc tính SecurityPermission để đảm bảo rằng chỉ có mã đáng tin cậy mới có thể nhận được thông tin.
I cao khuyên bạn nên đọc Design Guidelines trên MSDN.
16
Bạn muốn kế thừa từ System.Exception
và ưu tiên cung cấp (tối thiểu) cùng một nhà thầu công khai và chuyển các tham số cho các nhà thầu cơ bản. Thêm các thuộc tính và/hoặc các phương pháp có liên quan mà bạn cho là phù hợp với nhu cầu cụ thể của bạn.
public class MyException : System.Exception
{
public MyException() : base() { }
public MyException(string message) : base(message) { }
public MyException(string message, Exception innerException) : base(message, innerException) { }
}
Các vấn đề liên quan
- 1. Python: Tổ chức ngoại lệ do người dùng xác định trong một dự án hoàn chỉnh
- 2. Vị trí ngoại lệ do người dùng xác định bằng Python và bắt
- 3. tính công thức do người dùng xác định (với C++)
- 4. Cách thêm phương thức do người dùng xác định trong C# TBB (Đoạn mã C#)?
- 5. Đặt cookie do người dùng xác định trong Jmeter
- 6. Symfony2: Nơi đặt múi giờ do người dùng xác định
- 7. $ ngoại lệ được xác định trong "người dân địa phương"
- 8. Làm thế nào để viết các thao tác do người dùng xác định để phát trực tuyến lớp tự viết
- 9. Tạo chuyển đổi do người dùng xác định
- 10. Cách tốt nhất để chương trình C++ theo một tập lệnh do người dùng xác định?
- 11. Cách xác định ngoại lệ tùy chỉnh trong Haskell?
- 12. C++ 11 literal do người dùng định nghĩa
- 13. static_cast cho các loại do người dùng xác định
- 14. Cách kết nối các hàm bash do người dùng xác định với đường ống
- 15. C++ 0x, các chữ cái do người dùng xác định với toán tử bạn ""()
- 16. Cách tham chiếu thuộc tính hệ thống trong tệp .properties do người dùng xác định?
- 17. Làm cách nào để thiết lập chức năng do người dùng xác định trong Volt (Phalcon)
- 18. Ngoại lệ không xác định trong parseSdkContent
- 19. Các hàm do người dùng định nghĩa SQLite trong Lisp
- 20. Tăng sự kiện trong C# mà bỏ qua ngoại lệ do người xử lý nêu ra
- 21. Visual Studio không vi phạm các ngoại lệ do người dùng vô hiệu
- 22. Tôi làm cách nào để truy cập cài đặt Xcode do người dùng xác định?
- 23. Trình tạo mặc định do người dùng khai báo + bộ khởi tạo trong lớp! = Constructor do người dùng cung cấp?
- 24. Cách xác định người dùng Google OAuth2?
- 25. Ngoại lệ trong các trường hợp ngoại lệ trong C++
- 26. Cách đặt kiểu dữ liệu do người dùng xác định vào từ điển
- 27. Hàm băm cho lớp do người dùng xác định. Làm thế nào để kết bạn? :)
- 28. Gỡ lỗi các hàm do người dùng định nghĩa PostgreSQL
- 29. Cách triển khai Set bằng quyền bình đẳng do người dùng xác định
- 30. Số lượng đối số không xác định cho các hàm do người dùng định nghĩa SQL?
Theo Nguyên tắc Thiết kế Khuôn khổ .NET, bạn có nghĩa vụ kế thừa trực tiếp từ Ngoại lệ trừ khi bạn có lý do thực sự tốt để chọn một thứ khác. –
@ Jonathan: Tất cả các hệ thống trở lại bình thường. Đã xóa câu trả lời ngu ngốc của tôi và xóa nhận xét vô dụng của tôi. Upvoted câu trả lời trong tên của tinh thần SO. Cảm ơn bạn đã sửa. –