必须注意异常实用程序类的事情

时间:2013-12-30 11:21:44

标签: java exception

我们正在创建一个Exception实用程序类,它可以处理代码中发生的任何异常。任何类中的每个catch块都将调用实用程序类,实用程序类必须写入日志文件,向admin发送电子邮件并向用户显示状态代码。除了这些活动之外,我还能从这个异常实用程序类中做任何其他事情。

3 个答案:

答案 0 :(得分:4)

我要出去了......

我认为你所做的是一个坏主意:

  • 您的实用程序类不应该写入日志文件。它应该将日志事件发送到日志记录子系统(java.util.logging,log4j,logback,slf4j等)并将其留给日志记录子系统来决定记录什么。

  • 您的实用程序类不应生成电子邮件。如果你打算做那种事情,最好将它与应用程序完全断开。例如,实现一些东西来扫描日志文件......或处理日志事件。

    有一些复杂的系统专门用于执行此操作而无需填写管理员的邮箱等无用的错误报告。在某些例子中查找“nagios”和“zenoss”......

使用日志记录子系统和外部监视的主要优点是您可以更改配置文件中的行为,而不必修改,构建和重新部署代码。

答案 1 :(得分:1)

以下是改善课程的一些建议

  1. 不要写这样的课。

    应该是异常处理
    1. 忽略异常并让它们向上移动,直到某人能够正确处理它们。
    2. 根据它们出现的上下文正确处理它们。对于每个上下文,这必须发生一次,因此先验不应该有很多代码重复
  2. 不要让它按照你的描述进行操作:如果你必须记录某些内容,请使用你的日志库(sl4j,log4j,等等)如果你想要一些日志条目的电子邮件,请配置一个合适的appender。您希望向用户显示的一些异常,但希望这些是用于此目的的特殊异常,可以在一个特殊的位置处理(例如,基于Java Servlet的应用程序中的servlet过滤器)

  3. 不要将此类命名为此类 希望项目中的每个类都有用(即实用程序)(提示:如果不删除它)。因此,您不应该使用后缀“Util”或类似的

答案 2 :(得分:0)

如果您有客户端 - 服务器架构,那么您可能有两种不同的异常处理策略。在服务器端进行日志记录是必要的,但在客户端,至少应该考虑向服务器发送附加消息。还要记住,在客户端(在UI界面中)消息可以作为对话框或信息面板发送到UI,但不是在服务器端。因此,您的异常实用程序类可能会分为两个不同的类。

最重要的是:我会考虑捕捉异常。一般策略必须抛弃,而不是捕捉。如果您的架构捕获异常,那么请仔细考虑,这应该发生在哪里。