如何分派异常,以便以集中,用户友好的方式处理错误处理和诊断?
例如:
正确的错误处理策略取决于异常的类型和正在尝试的操作.(在间歇性信号上,重试X次然后告诉用户;在驱动程序错误时,记录错误并重新启动驱动程序;等等)如何调用此错误处理策略?
catch
每种类型的异常提供单独的块:由于从许多不同的地方调用DataHW类catch
,因此每个调用站点都必须复制每个块.这看起来很糟糕.catch
调用某个ExceptionDispatch
函数的块switch
:RTTI并且switch
通常表示无法应用OO设计,但这似乎是最不好的替代方案.通过捕获(...)并调用重新抛出和分派的共享处理函数,避免在每个调用站点复制catch块:
f()
{
try
{
// something
}
catch (...)
{
handle();
}
}
void handle()
{
try
{
throw;
}
catch (const Foo& e)
{
// handle Foo
}
catch (const Bar& e)
{
// handle Bar
}
// etc
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1198 次 |
最近记录: |