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