首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++中的标准异常还是自定义异常?

C++中的标准异常还是自定义异常?
EN

Stack Overflow用户
提问于 2011-01-20 21:29:50
回答 3查看 7.9K关注 0票数 20

对于库代码,创建并抛出自定义异常类( library :: exception )还是抛出标准异常(runtime_error、invalid_argument等)是更好的做法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-20 21:31:27

通常情况下,专门化(继承)标准异常并抛出它会更好。

这样,只需捕获一个std::exception,就可以将其捕获为泛型异常,但如果需要更专业的代码,还可以捕获特定的自定义异常类型。

有关抛出的内容,请参阅此C++Faq

票数 28
EN

Stack Overflow用户

发布于 2011-01-20 21:33:07

IMHO自定义异常。您的图书馆的客户将会收到这封信。他将知道究竟是什么引发了异常。

票数 2
EN

Stack Overflow用户

发布于 2011-01-20 21:43:05

根据经验,很少需要几个异常类。

在我的大多数代码中(主要是数字--如果你这样做的话,例如。IO,情况是不同的),我抛出标准exeptions (runtime_errorinvalid_argument,...)因为它们倾向于指示一些不容易恢复的东西(可能除了invalid_argument),并且很可能不会被用户代码捕获(除了可能在向用户抛出消息框的顶层)。

如果存在一些打算由典型用户代码捕获的异常,例如:bad_custom_castbad_market_data_identifier,而不是冒泡到main (就像数值例程中的失败,或bad_alloc),我创建了一个自定义类。但实际上这是相当罕见的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4747706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档