论坛首页 Java企业应用论坛

J2EE项目异常处理

浏览 83209 次
该帖已经被评为良好帖
作者 正文
   发表时间:2007-06-07  
fhjxp 写道
抛出异常的爱 写道
如果对异常有一定的规律性可以用spring来作异常处理,
减少恶心的try catch 块。。。。
(这样用checked的理由又多了一点点)

这怎么就成为了checked的理由呢?如果用Spring,也就是说异常交由Spring来处理,方法调用更不用知道有异常的存在了,unchecked不是更好么。透明到底


事实上spring的用法都是unchecked
但是我还是认为spring 能带来checked的用法变革
0 请登录后投票
   发表时间:2007-06-07  
klyuan 写道

返回值,这没有什么难以理解的啦!!
当方法出现几种逻辑时,有时用方法的返回值无法描述,这时可以用一个异常信息来代表返回结果!

唉,可能我还是没有说清楚!!我得去翻以前的程序,把例子弄出来

这种做法应该尽量避免,最近项目组里写一个根据将xml文件导入数据库,在导入之前需要验证xml的合法性,当xml不合法的时候,想告诉用户一个比较详细的信息:比如在哪行哪列出错了,就将这些信息写入异常中抛出来,这算是一个返回结果吧,勉强可以接受,大概这样:
    try{
      check();
      import();
      forward(sucess);
    }catch(Exception,e){
      forward(error,e)
    }

0 请登录后投票
   发表时间:2007-06-07  
抛出异常的爱 写道
fhjxp 写道
抛出异常的爱 写道
如果对异常有一定的规律性可以用spring来作异常处理,
减少恶心的try catch 块。。。。
(这样用checked的理由又多了一点点)

这怎么就成为了checked的理由呢?如果用Spring,也就是说异常交由Spring来处理,方法调用更不用知道有异常的存在了,unchecked不是更好么。透明到底


事实上spring的用法都是unchecked
但是我还是认为spring 能带来checked的用法变革

能说一下原因么?实在不理解
0 请登录后投票
   发表时间:2007-06-07  
抛出异常的爱 写道
fhjxp 写道
抛出异常的爱 写道
如果对异常有一定的规律性可以用spring来作异常处理,
减少恶心的try catch 块。。。。
(这样用checked的理由又多了一点点)

这怎么就成为了checked的理由呢?如果用Spring,也就是说异常交由Spring来处理,方法调用更不用知道有异常的存在了,unchecked不是更好么。透明到底


事实上spring的用法都是unchecked
但是我还是认为spring 能带来checked的用法变革


这也不竟然吧!!只有严重的错误才会抛unchecked异常!
0 请登录后投票
   发表时间: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;
			}


但是千万不要学这种方式!
这有时是不得已而为之的!
0 请登录后投票
   发表时间:2007-06-07  
这是在JavaEye中对Exception的讨论较有深度的一篇贴子.受用了
0 请登录后投票
   发表时间:2007-06-08  

javastudy 写道:

所有继承java.lang.Exception 的异常都属于checked异常。所有继承java.lang.RuntimeException的异常都属于
难道java.lang.RuntimeException不是继承java.lang.Exception吗




0 请登录后投票
   发表时间: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;
			}


但是千万不要学这种方式!
这有时是不得已而为之的!


不讨论异常处理的方式。
有向图存在环不是这么检查的吧?
每次搜索 从任一初始点出发,广度搜索,只要访问到访问过得点就认为存在环。
0 请登录后投票
   发表时间:2007-06-08  
ithero 写道
这是在JavaEye中对Exception的讨论较有深度的一篇贴子.受用了


没看过中文版,j2ee design and development E版里面有比较详细的说明,
0 请登录后投票
   发表时间: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;
			}


但是千万不要学这种方式!
这有时是不得已而为之的!


不讨论异常处理的方式。
有向图存在环不是这么检查的吧?
每次搜索 从任一初始点出发,广度搜索,只要访问到访问过得点就认为存在环。


我这里只是一点点代码,我不可能把所有的贴出来吧!!!!
深度还是广度遍历都是可以的嘛!
0 请登录后投票
论坛首页 Java企业应用版

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