Cách dễ dàng để tạo ngoại lệ tùy chỉnh trong C# đang sử dụng một lớp chung. Điều này làm giảm các dòng mã đáng kể nếu bạn cần tạo nhiều ngoại lệ (nghĩa là nếu bạn cần phân biệt giữa chúng trong các bài kiểm tra đơn vị của bạn).
Đầu tiên tạo ra một lớp đơn giản gọi là CustomException<T>
:
public class CustomException<T> : Exception where T : Exception
{
public CustomException() { }
public CustomException(string message) : base(message){ }
public CustomException(string message, Exception innerException) : base(message, innerException){ }
public CustomException(SerializationInfo info, StreamingContext context) : base(info, context){ }
}
Bạn có thể ghi đè lên như nhiều nhà thầu và phương pháp như bạn muốn (hoặc cần) để. Để tạo ra các loại ngoại lệ mới chỉ cần thêm lớp lót một mới:
public class MyCustomException : Exception { }
public class SomeOtherException : Exception { }
Nếu bạn muốn nâng cao việc bạn sử dụng tùy chỉnh ngoại lệ:
throw new CustomException<MyCustomException>("your error description");
này giữ đang ngoại lệ của bạn đơn giản và cho phép bạn phân biệt giữa các ngoại lệ đó:
try
{
// ...
}
catch(CustomException<MyCustomException> ex)
{
// handle your custom exception ...
}
catch(CustomException<SomeOtherException> ex)
{
// handle your other exception ...
}
Bạn có thể thêm thuộc tính tùy chỉnh vào một lớp ngoại lệ tùy chỉnh, vì vậy bạn không thể tạo một lớp ngoại lệ tùy chỉnh, sau đó thêm Enum cho "loại" ngoại lệ? – mellamokb
Nếu 'ném ngoại lệ mới (" Một thông báo lỗi đơn phương ");' sẽ không hoạt động cho bạn, bạn nên mở rộng câu hỏi để giải thích tại sao. –
Không, không có và không nên có. –