Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获得每个抛出异常的通知(即使是已处理的异常)_Java_Exception_Logging_Exception Handling - Fatal编程技术网

Java 获得每个抛出异常的通知(即使是已处理的异常)

Java 获得每个抛出异常的通知(即使是已处理的异常),java,exception,logging,exception-handling,Java,Exception,Logging,Exception Handling,是否有一种方法可以通知运行时抛出的每个异常(已处理和未处理) 我想要的是一个日志记录机制,它记录程序运行时出现的每个异常。我不想使用此记录器处理异常,我只想能够记录引发异常的事件。 问题是,我想包括所有系统异常,因此,无论何时抛出新异常,都不可能调用函数 我读过一些关于例外Listener的文章,但它们似乎是为不同的工作而设计的 有人知道这是怎么可能的吗?异常通常在捕获时记录(而不是抛出),因此它们的结果也可以记录下来。也就是说,一些例外情况没有后果,因此不需要调查,而其他例外情况非常关键,必须

是否有一种方法可以通知运行时抛出的每个异常(已处理和未处理)

我想要的是一个日志记录机制,它记录程序运行时出现的每个异常。我不想使用此记录器处理异常,我只想能够记录引发异常的事件。
问题是,我想包括所有系统异常,因此,无论何时抛出新异常,都不可能调用函数

我读过一些关于
例外Listener
的文章,但它们似乎是为不同的工作而设计的


有人知道这是怎么可能的吗?

异常通常在捕获时记录(而不是抛出),因此它们的结果也可以记录下来。也就是说,一些例外情况没有后果,因此不需要调查,而其他例外情况非常关键,必须在发生时进行调查。因此,一个好的日志文件不仅应该传达发生了异常,还应该传达该异常的(业务)影响,只有在捕捉到异常后才知道该影响。这要求在处理异常时记录异常

因此,没有Java API来拦截运行程序引发的所有异常


但是,查看所有抛出的异常有时会有所帮助。您可以通过向JVM附加一个调试器来实现,并为
java.lang.Throwable
的所有子类设置一个“异常断点”。或者,您可以编写一个拦截器来记录跨越某个API边界的所有异常(任何合理的依赖项注入容器都可以提供帮助)。或者,您可以使用在类加载时添加日志记录。

这个答案可能会满足您的要求:看起来很有希望……但这只允许我在try/catch块中处理异常……为什么要这样做?如果异常发生并作为正常处理的一部分进行处理,为什么有人会在意呢。如果您有一些捕获所有异常并将其丢弃的代码。。。您应该修复代码,使其表现更好。每当发生异常时,就意味着我的程序出现了问题。如果我的代码可以处理它,这很酷,但我仍然想知道这一点,因为最终我可以完全防止错误的发生。不,异常并不总是表示出现了问题。