【发布时间】:2012-06-04 21:58:27
【问题描述】:
我有一个看起来相当简单的问题(当然,如果你知道答案的话)。
某个函数我调用了另一个函数,但我想从调用者继续执行,即使被调用者抛出了异常。举个例子吧:
something function1()
{
try
{
//some code
int idNumber = function2();
//other code that need to execute even if function2 fails
return something;
}
catch(Exception e)
{//... perhaps something here}
}
编辑:function1 也有一个 return 语句,所以实际上没有任何东西会在途中崩溃
在function2中我需要做一些事情,但我只需要在失败时记录,例如:
int function2()
{
try
{
//dostuff
}
catch(Exception e)
{
//Log stuff to db
}
}
好的,现在我的问题是,如果我想在函数1中继续执行,即使函数2抛出错误,我该怎么办?
有时,如果我应该投掷,我会混淆;或抛出 e;或者什么都不扔(将 catch 块留空)
【问题讨论】:
-
没什么。由于您已经在函数 2 中处理了异常,前提是您不在函数 2 的 catch(...) 中重新抛出异常