锁定老帖子 主题:J2EE项目异常处理
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-07
fhjxp 写道 抛出异常的爱 写道 如果对异常有一定的规律性可以用spring来作异常处理,
减少恶心的try catch 块。。。。 (这样用checked的理由又多了一点点) 这怎么就成为了checked的理由呢?如果用Spring,也就是说异常交由Spring来处理,方法调用更不用知道有异常的存在了,unchecked不是更好么。透明到底 事实上spring的用法都是unchecked 但是我还是认为spring 能带来checked的用法变革 |
|
返回顶楼 | |
发表时间:2007-06-07
klyuan 写道 返回值,这没有什么难以理解的啦!! 当方法出现几种逻辑时,有时用方法的返回值无法描述,这时可以用一个异常信息来代表返回结果! 唉,可能我还是没有说清楚!!我得去翻以前的程序,把例子弄出来 这种做法应该尽量避免,最近项目组里写一个根据将xml文件导入数据库,在导入之前需要验证xml的合法性,当xml不合法的时候,想告诉用户一个比较详细的信息:比如在哪行哪列出错了,就将这些信息写入异常中抛出来,这算是一个返回结果吧,勉强可以接受,大概这样: try{ check(); import(); forward(sucess); }catch(Exception,e){ forward(error,e) } |
|
返回顶楼 | |
发表时间:2007-06-07
抛出异常的爱 写道 fhjxp 写道 抛出异常的爱 写道 如果对异常有一定的规律性可以用spring来作异常处理,
减少恶心的try catch 块。。。。 (这样用checked的理由又多了一点点) 这怎么就成为了checked的理由呢?如果用Spring,也就是说异常交由Spring来处理,方法调用更不用知道有异常的存在了,unchecked不是更好么。透明到底 事实上spring的用法都是unchecked 但是我还是认为spring 能带来checked的用法变革 能说一下原因么?实在不理解 |
|
返回顶楼 | |
发表时间:2007-06-07
抛出异常的爱 写道 fhjxp 写道 抛出异常的爱 写道 如果对异常有一定的规律性可以用spring来作异常处理,
减少恶心的try catch 块。。。。 (这样用checked的理由又多了一点点) 这怎么就成为了checked的理由呢?如果用Spring,也就是说异常交由Spring来处理,方法调用更不用知道有异常的存在了,unchecked不是更好么。透明到底 事实上spring的用法都是unchecked 但是我还是认为spring 能带来checked的用法变革 这也不竟然吧!!只有严重的错误才会抛unchecked异常! |
|
返回顶楼 | |
发表时间:2007-06-07
fhjxp 写道 klyuan 写道 返回值,这没有什么难以理解的啦!! 当方法出现几种逻辑时,有时用方法的返回值无法描述,这时可以用一个异常信息来代表返回结果! 唉,可能我还是没有说清楚!!我得去翻以前的程序,把例子弄出来 这种做法应该尽量避免,最近项目组里写一个根据将xml文件导入数据库,在导入之前需要验证xml的合法性,当xml不合法的时候,想告诉用户一个比较详细的信息:比如在哪行哪列出错了,就将这些信息写入异常中抛出来,这算是一个返回结果吧,勉强可以接受,大概这样: try{ check(); import(); forward(sucess); }catch(Exception,e){ forward(error,e) } 一般情况是不会这样做的!!! 我遇到这样的一个需求! 项目之间的关系有三种:前,后,无。 需要判断所有的项目间不能存在循环路径 a -> b->c->a 这就是循环路径了! 我用一个图实现检查是否存在循环路径,并且需要记录下这个循环路径。 需求仅要找出第一个循环路径即可,就不用往下找了 思路:从任一个点出发,如果找到它邻节点为第一个出发点时,那么就是循环路径。 当然是使用递归来实现的,因为需要记录循环的路径,所以比较麻烦的。一开始我是使用返回值! 这样它会记录的路径其实是一个倒置的路径。但中间还会出很多问题,这点我就不详细说了! 后来我干脆采用异常的方式来处理。 从任意一点往下找,当任一节点的邻节点为第第一个出发点时,我就抛出异常 if(vertexIndex == firstVertexIndex){ throw new CycleException("存在环路!"); } 这也是最不可能出错和效率最高的方法了! 上级调用代码 try { recordList.add(this.vertexList.get(vertexIndex)); int nextVertex = findHasNextVertex(vertexIndex,vertexIndex,recordList); } catch(CycleException ex) { return recordList; } 但是千万不要学这种方式! 这有时是不得已而为之的! |
|
返回顶楼 | |
发表时间:2007-06-07
这是在JavaEye中对Exception的讨论较有深度的一篇贴子.受用了
|
|
返回顶楼 | |
发表时间:2007-06-08
javastudy 写道: 所有继承java.lang.Exception 的异常都属于checked异常。所有继承java.lang.RuntimeException的异常都属于
难道java.lang.RuntimeException不是继承java.lang.Exception吗
|
|
返回顶楼 | |
发表时间:2007-06-08
klyuan 写道 fhjxp 写道 klyuan 写道 返回值,这没有什么难以理解的啦!! 当方法出现几种逻辑时,有时用方法的返回值无法描述,这时可以用一个异常信息来代表返回结果! 唉,可能我还是没有说清楚!!我得去翻以前的程序,把例子弄出来 这种做法应该尽量避免,最近项目组里写一个根据将xml文件导入数据库,在导入之前需要验证xml的合法性,当xml不合法的时候,想告诉用户一个比较详细的信息:比如在哪行哪列出错了,就将这些信息写入异常中抛出来,这算是一个返回结果吧,勉强可以接受,大概这样: try{ check(); import(); forward(sucess); }catch(Exception,e){ forward(error,e) } 一般情况是不会这样做的!!! 我遇到这样的一个需求! 项目之间的关系有三种:前,后,无。 需要判断所有的项目间不能存在循环路径 a -> b->c->a 这就是循环路径了! 我用一个图实现检查是否存在循环路径,并且需要记录下这个循环路径。 需求仅要找出第一个循环路径即可,就不用往下找了 思路:从任一个点出发,如果找到它邻节点为第一个出发点时,那么就是循环路径。 当然是使用递归来实现的,因为需要记录循环的路径,所以比较麻烦的。一开始我是使用返回值! 这样它会记录的路径其实是一个倒置的路径。但中间还会出很多问题,这点我就不详细说了! 后来我干脆采用异常的方式来处理。 从任意一点往下找,当任一节点的邻节点为第第一个出发点时,我就抛出异常 if(vertexIndex == firstVertexIndex){ throw new CycleException("存在环路!"); } 这也是最不可能出错和效率最高的方法了! 上级调用代码 try { recordList.add(this.vertexList.get(vertexIndex)); int nextVertex = findHasNextVertex(vertexIndex,vertexIndex,recordList); } catch(CycleException ex) { return recordList; } 但是千万不要学这种方式! 这有时是不得已而为之的! 不讨论异常处理的方式。 有向图存在环不是这么检查的吧? 每次搜索 从任一初始点出发,广度搜索,只要访问到访问过得点就认为存在环。 |
|
返回顶楼 | |
发表时间:2007-06-08
ithero 写道 这是在JavaEye中对Exception的讨论较有深度的一篇贴子.受用了
没看过中文版,j2ee design and development E版里面有比较详细的说明, |
|
返回顶楼 | |
发表时间:2007-06-08
Godlikeme 写道 klyuan 写道 fhjxp 写道 klyuan 写道 返回值,这没有什么难以理解的啦!! 当方法出现几种逻辑时,有时用方法的返回值无法描述,这时可以用一个异常信息来代表返回结果! 唉,可能我还是没有说清楚!!我得去翻以前的程序,把例子弄出来 这种做法应该尽量避免,最近项目组里写一个根据将xml文件导入数据库,在导入之前需要验证xml的合法性,当xml不合法的时候,想告诉用户一个比较详细的信息:比如在哪行哪列出错了,就将这些信息写入异常中抛出来,这算是一个返回结果吧,勉强可以接受,大概这样: try{ check(); import(); forward(sucess); }catch(Exception,e){ forward(error,e) } 一般情况是不会这样做的!!! 我遇到这样的一个需求! 项目之间的关系有三种:前,后,无。 需要判断所有的项目间不能存在循环路径 a -> b->c->a 这就是循环路径了! 我用一个图实现检查是否存在循环路径,并且需要记录下这个循环路径。 需求仅要找出第一个循环路径即可,就不用往下找了 思路:从任一个点出发,如果找到它邻节点为第一个出发点时,那么就是循环路径。 当然是使用递归来实现的,因为需要记录循环的路径,所以比较麻烦的。一开始我是使用返回值! 这样它会记录的路径其实是一个倒置的路径。但中间还会出很多问题,这点我就不详细说了! 后来我干脆采用异常的方式来处理。 从任意一点往下找,当任一节点的邻节点为第第一个出发点时,我就抛出异常 if(vertexIndex == firstVertexIndex){ throw new CycleException("存在环路!"); } 这也是最不可能出错和效率最高的方法了! 上级调用代码 try { recordList.add(this.vertexList.get(vertexIndex)); int nextVertex = findHasNextVertex(vertexIndex,vertexIndex,recordList); } catch(CycleException ex) { return recordList; } 但是千万不要学这种方式! 这有时是不得已而为之的! 不讨论异常处理的方式。 有向图存在环不是这么检查的吧? 每次搜索 从任一初始点出发,广度搜索,只要访问到访问过得点就认为存在环。 我这里只是一点点代码,我不可能把所有的贴出来吧!!!! 深度还是广度遍历都是可以的嘛! |
|
返回顶楼 | |