Sau khi đi qua một số liên kết về xử lý ngoại lệ (1, 2, và 3), tôi biết rằng các chương trình C++ có thể ném khá nhiều bất cứ điều gì như trường hợp ngoại lệ (int
, char*
, string
, exception
lớp). Tôi biết rằng std::exception
là lớp cơ sở cho các ngoại lệ tiêu chuẩn được chương trình đưa ra. Tuy nhiên, tôi đang cố gắng để thiết kế một try
... catch
khối như vậy:Tôi nên ném loại ngoại lệ nào?
try
{
MyFunc();
}
catch (certain exceptions)
{
// deal with the exception accordingly
}
catch (the rest of the exceptions)
{
// deal with these accordingly
}
khi MyFunc()
chứa sau:
void MyFunc()
{
...
if (certain condition is true) throw exception;
...
}
Vấn đề là ở chỗ một phần của MyFunc
chức năng, tôi 'không chắc chắn loại ngoại lệ tôi nên ném. Để giữ cho mã sạch bằng cách thực hiện lớp ngoại lệ của riêng tôi, tôi không có ý tưởng những gì sẽ là một cách tốt để thực hiện các lớp ngoại lệ như vậy.
Would sử dụng tăng là một ý tưởng tốt mặc dù toàn bộ isn dự án của tôi 't sử dụng thư viện tăng chưa? – stanigator
Có lẽ là không. Hệ thống phân cấp trên có thể được sử dụng thay thế và sửa đổi theo nhu cầu của bạn. Tôi đã có thành công vừa phải bằng cách sử dụng các mức độ eexception được đặt tên như vậy trong các dự án lớn. Ngoài ra, có thể có các vấn đề về tính di động nhỏ nếu bạn đang sử dụng tính năng biên dịch chéo bằng cách sử dụng tăng vì nó được tạo khuôn mẫu rất nhiều. Một số trình biên dịch có thể không phù hợp với tiêu chuẩn C++. – Abhay