我正在開發一個只有頭檔案的 C 20 庫,現在我需要添加例外類。
我有兩個選擇:
- 一個基類和多個子類
class library_error : public std::exception {
// ... other work
};
class parse_error : public library_error {
// ...
};
class playing_error : public library_error {
// ...
};
class bad_attr : public library_error {
// ...
};
// ...
- 一個基于錯誤編解碼器、一個 errc 和一個類別的例外類
class library_error : public std::exception {
// ...
public:
const std::error_code& code() const noexcept;
};
enum class library_errc {
parse_error = 0xbadbad,
playing_error = 0x9ood9ood,
bad_attr = 0x123456,
// ...
};
class library_erorr_category : public std::error_category {
// ...
};
這個庫有很多詳細的例外型別。哪個更好?或者有沒有更好的解決方案?
uj5u.com熱心網友回復:
很可能,一個例外不僅被拋出空白,而且還有一些引數。例如檔案丟失,播放錯誤發生的設備。您可能希望例外處理程式能夠處理這些。因此,我強烈建議不要繞過型別系統并使用例外型別層次結構。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/512952.html
標籤:C 例外
