如何抛出异常

jav*_*iry 2 c# exception try-catch throw c#-4.0

throw;和之间选择的最佳做法是throw ex;什么?有没有?关于 - 例如 - 这个简单的片段:

try{
    // some code
} catch (Exception ex) {
    // some catcher code
    // throw; ?
    // or
    // throw ex; ?
    // how to decide which one?
}
Run Code Online (Sandbox Code Playgroud)

更新: 我知道上面的两个区别.问题是如何决定使用其中之一?有没有最好的做法来做出更好的选择?

P. *_*kis 8

您应该使用throw;重新抛出原始异常(使用原始堆栈跟踪)或者使用throw new MyException(..., ex);抛出您自己的异常,该异常可能提供其他信息并将内部异常设置为ex.

如果您没有任何其他信息,请使用 throw;

如果你只捕获异常进行清理,那么请try {...} finally {...}改用.