精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-08-04
sonymusic 写道 Error是肯定不必管的。
RuntimeException也不应该去捕获,因为这类的Exception都是不可恢复的,而且往往是因为程序的BUG才会导致这类Exception,比如说NullPoint,或者IndexOutOfBound等等。捕获这类Exception事实上是在隐藏错误。 jdk没这么理想,你想判断用户输入的是不是浮点数怎么办? 如果用正则表达式就不跟你说了 我是选择捕获转类型过程中抛出的runtimeException然后警告用户 python中只有runtimeException,偶很同意python的做法, 只是这样程序员要很了解哪里会出错,出现错误会抛出什么错误 |
|
返回顶楼 | |
发表时间:2004-08-04
alin_ass 写道 sonymusic 写道 Error是肯定不必管的。
RuntimeException也不应该去捕获,因为这类的Exception都是不可恢复的,而且往往是因为程序的BUG才会导致这类Exception,比如说NullPoint,或者IndexOutOfBound等等。捕获这类Exception事实上是在隐藏错误。 jdk没这么理想,你想判断用户输入的是不是浮点数怎么办? 如果用正则表达式就不跟你说了 我是选择捕获转类型过程中抛出的runtimeException然后警告用户 python中只有runtimeException,偶很同意python的做法, 只是这样程序员要很了解哪里会出错,出现错误会抛出什么错误 这不是JDK理想不理想的问题。你检查到格式错误又如何?你要打印出stack trace给用户看吗?还是在一个中文的项目中显示一段英文出错信息? 这种Exception往往需要包装成你自己的Exception,比如说告诉用户“你的出现年月输入错误”之类的。 |
|
返回顶楼 | |
发表时间:2004-08-05
我的意思是runtimeException也需要捕获,自定义的业务错误当然是需要的
|
|
返回顶楼 | |
发表时间:2004-08-05
这点也是我比较头疼的东西!
对exception的理解,应该理解为程序流程的一个分支,是整体流程的一部分!从这个意义来说,每一个exception都应该捕获!但是在分层的框架中,很明显的出现了在哪层捕获?以及怎么处理Exception的问题! 具体应用具体分析! 在一般web开发中,异常应该转换为客户能见到的一个错误提示!所以在底层产生的异常都应该抛出,在业务层同意捕获并作为一个业务分支处理! |
|
返回顶楼 | |
发表时间:2004-08-05
alin_ass 写道 我的意思是runtimeException也需要捕获,自定义的业务错误当然是需要的
其实你可以换一个思路,利用JDK自己的RUNTIME异常,然后捕获之,这可以做为一种数据验证的一种手段。你也可以在有PARSE之前,先检查一下,比如说这个字符串能否转换成一个Integer。在判断完成后,就直接转换,而不再检查runtime异常。因为此时若出现runtime异常就说明你的PARSE代码有问题了。 而且说实话,为了这样的功能来写try-catch很不好看。 |
|
返回顶楼 | |
发表时间:2004-08-06
[quote="sonymusic
其实你可以换一个思路,利用JDK自己的RUNTIME异常,然后捕获之,这可以做为一种数据验证的一种手段。你也可以在有PARSE之前,先检查一下,比如说这个字符串能否转换成一个Integer。在判断完成后,就直接转换,而不再检查runtime异常。因为此时若出现runtime异常就说明你的PARSE代码有问题了。 而且说实话,为了这样的功能来写try-catch很不好看。 是的,到处用异常会使异常泛滥,偶现在用python,感觉没有checkException 的天空好自在:lol:实际上这个例子是<<java pitfalls>>里提到的, 复杂字符判断还是向你说的,会用正则表达式,但简单的就没必要了 |
|
返回顶楼 | |
发表时间:2004-08-25
我个人觉得JAVA的异常处理机制比较烦琐。有时候,一个方法要抛出/捕获一大堆的Exception,很是影响正常的编程思路。
我现在的一般处理都是这样的: 不管是什么异常,我统统捕获,用我定义的一个异常类来抛出。 如果是有必要让异常类知道的,就定义错误号,如果太多的Exception,我索性就抛出一个通用错误,同时把Exception的信息一道向上传递。 对于web应用,我把Exception业务有关的自定义异常信息都和错误号一一对应。下面的异常全部是抛出,到JSP页面,我try都不用写,一律用errorPage来显示。1.通用异常,即属于非业务异常,就显示一个‘未知错误’,同时把错误信息写入log。 2.业务异常,即和业务有关,就显示相关的异常名称和信息。同时写入log。 (这类异常通过错误号区分。) |
|
返回顶楼 | |