Tôi muốn tạo Ngoại lệ tùy chỉnh trong C#, nhưng về mặt lý thuyết tôi cần thực hiện phân tích cú pháp nhỏ trước khi tôi có thể tạo Ngoại lệ có thể đọc được của con người.Đặt thông điệp của Ngoại lệ tùy chỉnh mà không chuyển nó tới hàm tạo cơ sở
Vấn đề là bạn chỉ có thể đặt Thông báo gốc bằng cách gọi hàm tạo cơ sở là Messsage
, vì vậy tôi không thể thực hiện bất kỳ phân tích cú pháp nào trước.
tôi đã cố gắng overring Message bất động sản như thế này:
public class CustomException : Exception
{
string _Message;
public CustomException(dynamic json) : base("Plep")
{
// Some parsing to create a human readable message (simplified)
_Message = json.message;
}
public override string Message
{
get { return _Message; }
}
}
Vấn đề là rằng debugger Visual Studio vẫn thể hiện những thông điệp mà tôi đã vượt qua thành các nhà xây dựng, Plep trong trường hợp này.
throw new CustomException(new { message="Show this message" })
kết quả trong:
Nếu tôi rời khỏi nhà xây dựng cơ sở làm trống nó sẽ hiển thị một thông điệp rất chung chung:
Một ngoại lệ unhandled của loại 'App.CustomException' xảy ra trong App.exe
Câu hỏi
Dường như Hộp thoại ngoại lệ đọc một số trường/thuộc tính mà tôi không có bất kỳ quyền truy cập nào. Có cách nào khác để thiết lập một thông báo lỗi có thể đọc được của con người bên ngoài hàm tạo cơ sở trên Ngoại lệ hay không.
Lưu ý rằng tôi đang sử dụng Visual Studio 2012.
Mã của bạn chỉ hoạt động tốt cho tôi. và nó có thể hoạt động. – Swift
Nó biên dịch, nhưng nếu bạn ném một lỗi, nó sẽ hiển thị Thông báo cơ bản ("Plep"), thay vì "Hiển thị thông báo này". Vui lòng xem ví dụ bổ sung mà tôi đã thêm vào. –
Tôi nghĩ rằng giải pháp lý tưởng không có sẵn. Tôi đã đi đến một vấn đề tương tự khi tôi phân tích cú pháp các lớp Exception wholoe thành JSON. Các thuộc tính tùy chỉnh bị mất trong tiến trình. Bạn có thể mô tả một kịch bản? Có lẽ chúng tôi có thể giúp giải quyết một số vấn đề. – Minduca