首页 / 知识
如何检测Java中何时全局抛出了异常?
2023-04-16 02:34:00

How can I detect when an Exception's been thrown globally in Java?如何检测何时在应用程序中的任何地方引发了异常? 在Java桌面应用程序中的任何地方引发异常时,我都会尝试自动发送电子邮件给自己。我认为通过这种方式我可以更加主动。 我知道只要发生异常,我都可以明确地记录日志并通知自己,但是我必须在所有地方都做,而且我可能(很可能会)错过一对夫妇。 有什么建议吗? 您可能不想在任何例外情况下寄出邮件。 JDK中有很多代码实际上依赖于异常才能正常工作。我认为您更感兴趣的是未捕获的例外。如果您正在捕获异常,则应在此处处理通知。 在桌面应用程序中,有两个地方需要担心这一点:事件分发线程(EDT)和EDT之外。在全局范围内,您可以注册一个实现 EDT具有用于处理异常的不同钩子。需要使用零参数构造函数的类的"完全合格的类名"注册系统属性 因此,如果您不在乎哪个线程,则示例中发生的异常可能看起来像这样:
将此类添加到某个随机包中,然后调用 Java 1.5中新的调试钩子使您可以执行此操作。它启用例如调试器中的"任何异常中断"。 这是您需要的特定Javadoc。 签出Thread.UncaughtExceptionHandler。您可以为每个线程设置它,也可以为整个VM设置默认值。 这至少可以帮助您找到想念的人。 在我当前的项目中,我面临有关错误检测的类似要求。为此,我采用了以下方法:我使用log4j跨应用程序进行日志记录,并且在所有捕获到异常的地方使用标准方法:
log4j配置文件必须仅包含新附加程序的定义,并将其附加到所选记录器(在我的情况下为root):
您可以在程序执行流程的某个重要时刻调用ErrorsDetectingAppender的errorsOccured()方法,也可以通过向append()方法中的if块添加功能来立即做出反应。这种方法与语义一致:检测到您认为错误并记录错误的内容。如果以后再考虑选择的错误不是那么重要,则只需将日志记录级别更改为log.warn(),就不会发送报告。 如果使用的是Java 1.3 / 1.4,则Thread.UncaughtExceptionHandler不可用。 如果您使用的是Spring之类的Web框架,则可以在web.xml中委派一个页面,然后使用控制器发送电子邮件。例如: 在web.xml中:
然后将/error/500.htm定义为控制器。您可以从参数javax.servlet.error.exception访问异常:
如果您只是在运行常规Java程序,那么我想您会陷入公共静态void main(String [] args){试试{...} catch(Exception e){}} 没有充分的理由通知每个抛出的异常。我猜您假设抛出的异常表示您"需要"知道的"问题"。但这是错误的。如果引发,捕获和处理异常,一切都很好。您唯一需要担心的是引发但未处理(未捕获)的异常。但是您可以自己在 如果遇到运行时异常(例如OutOfMemoryError或StackOverflow),则可能无法发送电子邮件。您很有可能必须生成另一个进程并捕获由它引发的任何异常(使用上述各种技术)。 我假设您不是任何异常,而是任何未捕获的异常。 在这种情况下,Sun网站上的这篇文章有一些想法。您需要将顶级方法package在 在这种情况下,我认为最好的选择是编写一个自定义类加载器以处理应用程序中的所有类加载,并且每当请求异常类时,您都将返回package所请求的异常类的类。该package器调用package的异常,但也记录异常事件。 |
最新内容
相关内容
linux导出到桌面命令?
linux导出到桌面命令?,系统,信息,地址,名称,时间,电脑,设备,名字,密码,文件,scp从linux服务器拷贝文件到windows的机子上怎么写命令?首先从服硬盘检测命令linux?
硬盘检测命令linux?,信息,情况,系统,管理,数据,检测,百分比,命令,工具,设备,linux查看硬件命令有哪些《Linux就该这么学》给同学们介绍一下查linux用命令进去桌面?
linux用命令进去桌面?,密码,系统,终端,官网,设备,环境,桌面,快捷键,命令,窗口,linux命令行怎么进入桌面1、返回到我的桌面界面:Ctrl+Alt+F7退出linux性能检测命令?
linux性能检测命令?,系统,情况,信息,状态,工具,实时,百分比,指标,分析,命令,查看linux的cpu和内存要查看CPU使用情况,可以使用top命令。Top命令连接linux桌面命令?
连接linux桌面命令?,系统,软件,工作,密码,电脑,信息,工具,网站,地址,名称,linux命令行怎么进入桌面返回到我的桌面界面:Ctrl+Alt+F7退出。Ctrl+linux桌面可视命令?
linux桌面可视命令?,工具,系统,发行,密码,地方,服务,管理,技术,终端,命令,Linux的命令行界面Linux 操作系统通常为用户提供两种不同的操作界面linux桌面可视命令?
linux桌面可视命令?,工具,系统,发行,密码,地方,服务,管理,技术,终端,命令,Linux的命令行界面Linux 操作系统通常为用户提供两种不同的操作界面linux命令行返回桌面?
linux命令行返回桌面?,系统,密码,状态,暂停,环境,终端,信息,命令,界面,字符,linux,按了ctrl+alt+F1,进入了类似纯命令行的界面,让输入login信linuxcd命令桌面?
linuxcd命令桌面?,系统,位置,密码,电脑,管理,环境,情况,名称,信息,命令,linux下cd命令的使用问题1、cd ~:回到用户家目录。注:这得看你是用什么编写linux全局命令?
编写linux全局命令?,工作,地址,系统,信息,命令,目录,标准,时间,文件,控制台,Linux命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目录linux桌面命令在哪里?
linux桌面命令在哪里?,系统,密码,环境,位置,首页,终端,状态,信息,工具,电脑,linux进入home怎么返回桌面命令?返回到我的桌面界面:Ctrl+Alt+F7退linux检测硬件的命令?
linux检测硬件的命令?,信息,系统,检测,工具,第一,数据,设备,分析,实时,百度,如何查看linux系统CPU信息cpu信息记录在/proc/cpuinfo中。linux怎