我有以下案例:
try{
auto result = do_something(some_input); //do_something() may throw exceptions
if (result == bad){
do_something_else(some_input);
}
}
catch(...){
do_something_else(some_input);
}
一些解释:
do_something()
如果过程成功但过程的准确性不是那么好(它是计算机视觉过程),则返回bad
。do_something()
如果由于缺少信息或输入非常错误而无法处理数据,则抛出异常。- 在 1 和 2 中,我希望流程转到另一个方法,即
do_something_else()
。
我的问题:
- 这个设计不好吗?我觉得我使用异常是错误的。
- 是否可以通过以下方式合并它们:
理论代码:
auto result = do_something(some_input); //do_something() may throw exceptions
if (result == bad OR exception was thrown){
do_something_else(some_input);
}
最佳答案
我推荐这样的东西
bool suceeded = false;
try
{
auto result = do_something
if (result != bad)
{
succeeded = true;
}
}
catch (specific_exceptions)
{
// Log or do something useful here
}
if (!succeeded)
{
do_something_else
}
else
{
use result
}
这试图使您的应用程序的自然流程远离异常情况,并以它们自己独特的方式处理这两个失败,同时仍然将它们汇集到一个持续的案例中。
关于c++ - 如果满足条件或发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40100542/