Exception handling 异常处理和抛出(throw-ex)

Exception handling 异常处理和抛出(throw-ex),exception-handling,Exception Handling,处理异常的最佳方法是什么? 还有,为什么我不应该写: catch (Exception ex) { throw ex; } 为什么你会抓住再次抛出它的期望,如果你抓住异常并做一些不只是抛出它的事情,那就好了 try { } catch(Exception ex) { // do something like log the exception throw ex; // let another catch block handle the expection. } 为什么你会抓住再次抛出

处理异常的最佳方法是什么?
还有,为什么我不应该写:

catch (Exception ex) { throw ex; }

为什么你会抓住再次抛出它的期望,如果你抓住异常并做一些不只是抛出它的事情,那就好了

try 
{
}
catch(Exception ex)
{
 // do something like log the exception
 throw ex; // let another catch block handle the expection.
}

为什么你会抓住再次抛出它的期望,如果你抓住异常并做一些不只是抛出它的事情,那就好了

try 
{
}
catch(Exception ex)
{
 // do something like log the exception
 throw ex; // let another catch block handle the expection.
}

处理异常的最佳方法是在
catch
块中执行有意义的操作(在您的示例中,该块包含
throw ex
)。“有意义”的定义完全取决于你的需要

您不应该执行
catch(Exception ex){throw ex;}
,因为这会阻止异常链。捕获异常、处理异常并重新抛出,以便调用代码可以看到它,这是完全正确的,但您应该这样做:

catch (Exception ex) { /* handling code; */ throw; } 

处理异常的最佳方法是在
catch
块中执行有意义的操作(在您的示例中,该块包含
throw ex
)。“有意义”的定义完全取决于你的需要

您不应该执行
catch(Exception ex){throw ex;}
,因为这会阻止异常链。捕获异常、处理异常并重新抛出,以便调用代码可以看到它,这是完全正确的,但您应该这样做:

catch (Exception ex) { /* handling code; */ throw; } 

您可能想指定在标签中使用的语言。您可能需要指定在标签中的语言。这在C++中很好,但在java中没有。这就是为什么原始海报确实需要识别他所问的语言。@事实上,我假设C#在默认情况下;)考虑到其他OP的问题,它甚至可能是一个很好的假设。这在C++中很好,但是在java中没有。这就是为什么原始海报确实需要识别他所问的语言。@事实上,我假设C#在默认情况下;)考虑到其他OP的问题,这甚至可能是一个很好的假设。