论坛首页 Java企业应用论坛

什么是错误,什么是异常,Exception是干什么的

浏览 19239 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-08-04  
sonymusic 写道
Error是肯定不必管的。
RuntimeException也不应该去捕获,因为这类的Exception都是不可恢复的,而且往往是因为程序的BUG才会导致这类Exception,比如说NullPoint,或者IndexOutOfBound等等。捕获这类Exception事实上是在隐藏错误。


jdk没这么理想,你想判断用户输入的是不是浮点数怎么办?
如果用正则表达式就不跟你说了

我是选择捕获转类型过程中抛出的runtimeException然后警告用户

python中只有runtimeException,偶很同意python的做法,
只是这样程序员要很了解哪里会出错,出现错误会抛出什么错误
0 请登录后投票
   发表时间:2004-08-04  
alin_ass 写道
sonymusic 写道
Error是肯定不必管的。
RuntimeException也不应该去捕获,因为这类的Exception都是不可恢复的,而且往往是因为程序的BUG才会导致这类Exception,比如说NullPoint,或者IndexOutOfBound等等。捕获这类Exception事实上是在隐藏错误。


jdk没这么理想,你想判断用户输入的是不是浮点数怎么办?
如果用正则表达式就不跟你说了

我是选择捕获转类型过程中抛出的runtimeException然后警告用户

python中只有runtimeException,偶很同意python的做法,
只是这样程序员要很了解哪里会出错,出现错误会抛出什么错误


这不是JDK理想不理想的问题。你检查到格式错误又如何?你要打印出stack trace给用户看吗?还是在一个中文的项目中显示一段英文出错信息?
这种Exception往往需要包装成你自己的Exception,比如说告诉用户“你的出现年月输入错误”之类的。
0 请登录后投票
   发表时间:2004-08-05  
我的意思是runtimeException也需要捕获,自定义的业务错误当然是需要的
0 请登录后投票
   发表时间:2004-08-05  
这点也是我比较头疼的东西!
对exception的理解,应该理解为程序流程的一个分支,是整体流程的一部分!从这个意义来说,每一个exception都应该捕获!但是在分层的框架中,很明显的出现了在哪层捕获?以及怎么处理Exception的问题!
具体应用具体分析!
在一般web开发中,异常应该转换为客户能见到的一个错误提示!所以在底层产生的异常都应该抛出,在业务层同意捕获并作为一个业务分支处理!
0 请登录后投票
   发表时间:2004-08-05  
alin_ass 写道
我的意思是runtimeException也需要捕获,自定义的业务错误当然是需要的


其实你可以换一个思路,利用JDK自己的RUNTIME异常,然后捕获之,这可以做为一种数据验证的一种手段。你也可以在有PARSE之前,先检查一下,比如说这个字符串能否转换成一个Integer。在判断完成后,就直接转换,而不再检查runtime异常。因为此时若出现runtime异常就说明你的PARSE代码有问题了。

而且说实话,为了这样的功能来写try-catch很不好看。
0 请登录后投票
   发表时间:2004-08-06  
[quote="sonymusic
其实你可以换一个思路,利用JDK自己的RUNTIME异常,然后捕获之,这可以做为一种数据验证的一种手段。你也可以在有PARSE之前,先检查一下,比如说这个字符串能否转换成一个Integer。在判断完成后,就直接转换,而不再检查runtime异常。因为此时若出现runtime异常就说明你的PARSE代码有问题了。

而且说实话,为了这样的功能来写try-catch很不好看。


是的,到处用异常会使异常泛滥,偶现在用python,感觉没有checkException
的天空好自在:lol:实际上这个例子是<<java pitfalls>>里提到的,
复杂字符判断还是向你说的,会用正则表达式,但简单的就没必要了
0 请登录后投票
   发表时间:2004-08-25  
我个人觉得JAVA的异常处理机制比较烦琐。有时候,一个方法要抛出/捕获一大堆的Exception,很是影响正常的编程思路。
  我现在的一般处理都是这样的:
    不管是什么异常,我统统捕获,用我定义的一个异常类来抛出。
    如果是有必要让异常类知道的,就定义错误号,如果太多的Exception,我索性就抛出一个通用错误,同时把Exception的信息一道向上传递。
   对于web应用,我把Exception业务有关的自定义异常信息都和错误号一一对应。下面的异常全部是抛出,到JSP页面,我try都不用写,一律用errorPage来显示。1.通用异常,即属于非业务异常,就显示一个‘未知错误’,同时把错误信息写入log。
      2.业务异常,即和业务有关,就显示相关的异常名称和信息。同时写入log。
(这类异常通过错误号区分。)
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics