什么是两者之间的区别?
try { ... }
catch{ throw }
及
try{ ... }
catch(Exception e) {throw new Exception(e.message) }
不管第二个显示了什么信息。
什么是两者之间的区别?
try { ... }
catch{ throw }
及
try{ ... }
catch(Exception e) {throw new Exception(e.message) }
不管第二个显示了什么信息。
如果你想的话,可以抛出一个新的异常,将原始异常设置为内部异常。
throw或throw ex,两者都用于抛出或重新抛出异常,当您只需简单记录错误信息并且不想向调用方发送任何信息时,您只需在catch中记录错误并离开即可。
但是,如果您想向调用方发送有关异常的一些有意义的信息,则使用throw或throw ex。现在,throw和throw ex之间的区别在于throw保留堆栈跟踪和其他信息,但是throw ex创建一个新的异常对象,因此原始堆栈跟踪会丢失。
那么我们什么时候应该使用throw和throw e?仍然有一些情况可能需要重新抛出异常,例如重置调用堆栈信息。
例如,如果该方法位于库中,并且您希望隐藏库的详细信息以避免暴露给调用代码,您不一定希望调用堆栈包含库内部私有方法的信息。在这种情况下,您可以在库的公共方法中捕获异常,然后重新抛出它们,以便调用堆栈从这些公共方法开始。