[英]Is it standard practice to use standard std::exception subclasses for your own purposes?
如果我有這樣的代碼:
std::vector<foo> bar;
...fill up bar...
if (bar.size() < 5)
{
throw std::out_of_range("Not enough foos in the bar");
}
標准是否允許並期望這樣的重用,還是不贊成?
不是為了它們自己的目的,但是如果您想按照最初的意圖使用它們,那很好。
你舉的例子可能是一個合理利用std::out_of_range
但投擲std::bad_weak_ptr
例如是不恰當的。 `std::out_of_range的參考說明:
報告由於嘗試訪問超出定義范圍的元素而導致的錯誤。
因此,如果您即將訪問bar[5]
則例外是合適的。
最終重要的是,如果您正在制作一個庫,您應該記錄您拋出哪些異常以及原因。
簡短的回答:是的。
更長的答案:你可以隨意拋出一些不是從std::exception
派生的東西,但這使得人們很難編寫通用的catch
子句(除了catch(...)
)並打印出關於異常的任何有意義的信息( .what()
部分)。
找到最能描述您將要拋出的內容並使用它的標准異常。 您也可以繼承它以創建自己的例外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.