kkxygjf 2009-11-30 17:20
浏览 221
已采纳

如何在某个顶层方便的捕获事件线程抛出的异常

    有一次看.NET平台的WinForm发现其有提供捕捉这样异常的方法,升至它有默认的异常处理。
但是在Swing中,如果某事件处理函数抛出了一个异常,很可能导致事件线程挂掉,这时候界面点击无反应,
软件甚至要通过强行关闭才能退出。如果在某顶层做一个最后防御,这样哪个事件处理模块如果抛出未处理异常,
也不至于程序莫名的挂掉,顶多输出一个信息告知用户系统错误,我要挂了,然后退出。
但是我找了一下不知Swing在什么地方可以捕获异常。不知道大家是如何处理这个问题的。
问题补充:
是这样的   swing你得自己写个异常  当抛出异常的时候 可以让异常形成一个joptionpane 点了确定之后 这样程序就不挂着了  可以给用户选择的余地 这样增加了程序的友好性
你写个异常继承RuntimeException 在构造器里写段抛出对话框的代码 并把信息打印在抛出的对话框里
_____________________________________
你这里的想法是说,我专门定义一个异常,然后别人如果出现错误要抛出这个异常?
然后这个异常呢会弹出对话框?
可是这并没有解决真正的问题啊,我要做的本来就是一个最后防御,某个事件处理函数抛出什么异常这本更就是不可知的,我要的是在某个顶层能捕捉到事件线程抛出来的未处理异常,这里就是要为了程序不能不明不白的挂掉。
问题补充:
我说的和你想的意思一样 我们现在就是这样处理的 而且程序运行了几年了也没问题啊   你在有可能抛出异常的地方try catch然后抛出你自己写的异常啊  编译时异常必须声明这不用咱们去操心JAVA机制自动处理   而只要有运行时异常抛出就一定是你代码的问题  或者用户的输入之类的不符合你的预期逻辑你刻意的抛出一个异常  异常是一层层向上抛的 你把事件可能出现问题的部分 try catch住不就行了么
————————————————————————
可是这样的话,那么和他自己捕捉了某个异常,然后弹出一个对话框又有多少区别呢?这是把防御交给了每个处理者自己。可是如果我不能假定他们都正确处理了这一切呢?这个时候我需要一张最后防御网,这个该如何处理呢?
问题补充:
哦呵呵  你的意思是不是怕有遗漏 想来个最后有个系统的捕获是吧  一般的话 要是把项目配置在spring中都会在spring里配置一个最顶层的异常处理器 。。 你邮箱多少 我给你发个springrcp的文档  你进去看他的异常处理部分上面说的很清楚 呵呵 但是很长 在这里说不清楚
__________________________________
以现在的情况是不可能改用springrcp的,既然springrcp做到了,那么一定是有方法的,只是我奇怪为什么Swing没有提供一个简便的接口来捕获事件线程异常呢?这一点上 .net确实周到了一点。

  • 写回答

5条回答 默认 最新

  • wocsok 2009-12-03 16:09
    关注

    哦呵呵 你的意思是不是怕有遗漏 想来个最后有个系统的捕获是吧 一般的话 要是把项目配置在spring中 都会在spring里配置一个最顶层的异常处理器 。。 你邮箱多少 我给你发个springrcp的文档 你进去看他的异常处理部分 上面说的很清楚 呵呵 但是很长 在这里说不清楚

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊