gpt4 book ai didi

java - Java 中的异常处理

转载 作者:行者123 更新时间:2023-12-02 08:21:28 26 4
gpt4 key购买 nike

是否可以让我的所有 try/catch 代码捕获父类(super class)异常,然后让一些 util 类找出异常是什么类型,以便我可以记录特定类型?例如:

CustomLog{
Logger log= ....

public static logTrace(Exception e){
log.debug("name of exception: " + e.????);
}

}

SomeOtherClass{

try{

}catch(Exception e){
CustomLog.logTrace(e);
}

}

或者对于我的目标有更好的想法(仅在代码中包含通用异常)吗?

最佳答案

如果您的目的只是记录有关异常的信息,则只需将异常传递给适当的日志记录方法,然后让记录器为您完成工作:

log.error("Exception caught", e)

Most logging APIs support Throwable 作为其 debug()error() 等方法的参数。除非您有真正的理由这样做,否则无需重新发明轮子。

关于您有关架构的问题(“是否有更好的想法”部分),您可以遵循一个基本规则:如果您可以对异常执行某些操作(例如回滚事务),则捕获它并执行适当的操作。如果您无法从中恢复,则将其从您的方法中抛出并让调用者处理它。

最终,不可恢复的异常将在堆栈中传播到容器(无论是 main 方法、servlet 容器还是其他容器)。然后容器可以写入日志、发送警报或以其他方式处理异常。

不要使用常规异常(就像您建议的那样)。 不要捕获某些内容,将其记录下来,然后继续处理,就像它没有发生一样(除非这对于您的具体情况确实有意义)。如果您无法处理异常,请从您所在的方法中抛出它,并让更高层的方法来处理它。

关于java - Java 中的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com