有一次看.NET平台的WinForm发现其有提供捕捉这样异常的方法,升至它有默认的异常处理。
但是在Swing中,如果某事件处理函数抛出了一个异常,很可能导致事件线程挂掉,这时候界面点击无反应,
软件甚至要通过强行关闭才能退出。如果在某顶层做一个最后防御,这样哪个事件处理模块如果抛出未处理异常,
也不至于程序莫名的挂掉,顶多输出一个信息告知用户系统错误,我要挂了,然后退出。
但是我找了一下不知Swing在什么地方可以捕获异常。不知道大家是如何处理这个问题的。
问题补充:
是这样的 swing你得自己写个异常 当抛出异常的时候 可以让异常形成一个joptionpane 点了确定之后 这样程序就不挂着了 可以给用户选择的余地 这样增加了程序的友好性
你写个异常继承RuntimeException 在构造器里写段抛出对话框的代码 并把信息打印在抛出的对话框里
_____________________________________
你这里的想法是说,我专门定义一个异常,然后别人如果出现错误要抛出这个异常?
然后这个异常呢会弹出对话框?
可是这并没有解决真正的问题啊,我要做的本来就是一个最后防御,某个事件处理函数抛出什么异常这本更就是不可知的,我要的是在某个顶层能捕捉到事件线程抛出来的未处理异常,这里就是要为了程序不能不明不白的挂掉。
问题补充:
我说的和你想的意思一样 我们现在就是这样处理的 而且程序运行了几年了也没问题啊 你在有可能抛出异常的地方try catch然后抛出你自己写的异常啊 编译时异常必须声明这不用咱们去操心JAVA机制自动处理 而只要有运行时异常抛出就一定是你代码的问题 或者用户的输入之类的不符合你的预期逻辑你刻意的抛出一个异常 异常是一层层向上抛的 你把事件可能出现问题的部分 try catch住不就行了么
————————————————————————
可是这样的话,那么和他自己捕捉了某个异常,然后弹出一个对话框又有多少区别呢?这是把防御交给了每个处理者自己。可是如果我不能假定他们都正确处理了这一切呢?这个时候我需要一张最后防御网,这个该如何处理呢?
问题补充:
哦呵呵 你的意思是不是怕有遗漏 想来个最后有个系统的捕获是吧 一般的话 要是把项目配置在spring中都会在spring里配置一个最顶层的异常处理器 。。 你邮箱多少 我给你发个springrcp的文档 你进去看他的异常处理部分上面说的很清楚 呵呵 但是很长 在这里说不清楚
__________________________________
以现在的情况是不可能改用springrcp的,既然springrcp做到了,那么一定是有方法的,只是我奇怪为什么Swing没有提供一个简便的接口来捕获事件线程异常呢?这一点上 .net确实周到了一点。
如何在某个顶层方便的捕获事件线程抛出的异常
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- wocsok 2009-12-03 16:09关注
哦呵呵 你的意思是不是怕有遗漏 想来个最后有个系统的捕获是吧 一般的话 要是把项目配置在spring中 都会在spring里配置一个最顶层的异常处理器 。。 你邮箱多少 我给你发个springrcp的文档 你进去看他的异常处理部分 上面说的很清楚 呵呵 但是很长 在这里说不清楚
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 matlab计算中误差
- ¥15 对于相关问题的求解与代码
- ¥15 ubuntu子系统密码忘记
- ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料
- ¥15 使用R语言marginaleffects包进行边际效应图绘制
- ¥20 usb设备兼容性问题
- ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊