Tôi đang cố gắng triển khai lớp Ngoại lệ của riêng mình trong C#. Với mục đích này, tôi đã tạo ra một lớp CustomException bắt nguồn từ Ngoại lệ.Trả lại ngoại lệ tùy chỉnh
class CustomException : Exception
{
public CustomException()
: base() { }
public CustomException(string message)
: base(message) { }
public CustomException(string format, params object[] args)
: base(string.Format(format, args)) { }
public CustomException(string message, Exception innerException)
: base(message, innerException) { }
public CustomException(string format, Exception innerException, params object[] args)
: base(string.Format(format, args), innerException) { }
}
Sau đó, tôi sử dụng nó
static void Main(string[] args)
{
try
{
var zero = 0;
var s = 2/zero;
}
catch (CustomException ex)
{
Console.Write("Exception");
Console.ReadKey();
}
}
tôi hy vọng tôi sẽ nhận được ngoại lệ của tôi, nhưng tất cả tôi nhận được là một DivideByZeroException chuẩn. Làm thế nào tôi có thể bắt một phân chia bằng không ngoại lệ bằng cách sử dụng lớp CustomException của tôi? Cảm ơn.
Tại sao .NET nên bắt đầu sử dụng ngoại lệ của bạn? Bạn phải ['ném'] (http://msdn.microsoft.com/en-us/library/1ah5wsex (v = vs.110) .aspx) bản thân bạn. –
okay, ngay cả khi tôi thêm ném Ngoại lệ mới vào phần bắt, tôi sẽ không nhận được nó. Tôi sẽ tiếp tục nhận được ngoại lệ standart. Tôi có cần phải viết một số mã trong CustomException của mình để bắt ngoại lệ DevideByZero không? – JohnyMotorhead
Bạn không nên nếu bạn ném _before_ div bằng 0 hoặc sử dụng cách tiếp cận của Alexei. Nhân tiện: Tôi nghĩ việc thay thế các trường hợp ngoại lệ là không tốt nếu bạn không có lý do chính đáng. –