try {
  一些语句
}
catch {
}
catch{
}  //很多catch
catch(Exception ex) {
  一些语句
  throw ex;  //重新抛出异常;
}
catch {
}
catch{
}  //很多catch下面怎么执行? 是返回到第一个catch开始匹配, 还是从接下来的语句中寻找匹配?
顺便看看下面的帖子:
http://topic.csdn.net/u/20100419/20/637b7b00-bd60-4536-980a-3d5b8032b299.html

解决方案 »

  1.   

    catch只执行一个的 一个执行了后边的不会再处理
      

  2.   

    catch(Exception e)每一个catch语句捕获一种异常,在一个复杂的程序里,try块里面可能会产生多种异常,所以要用多个catch来捕获。至于重新抛出异常,估计是catch语句执行时也产生了异常,然后抛出,让别的语句来捕获。
      

  3.   

    对了,重抛出异常,应该是在此catch块内暂时不对其进行处理,而是抛出给别的异常处理块
      

  4.   

    catch(Exception ex) {
      一些语句
      throw ex;  //重新抛出异常;
    }
    首先、Exception可以捕获所有的异常,所以catch(Exception ex)都是放在最后一个catch块,否则会得到其后的catch块永远不会执行的编译错误
    其次、多重catch如同if-else只会匹配一个,进入一个catch块后不会再去看后面的catch块。重抛异常是不在当前代码中处理,而是交给这段代码的调用者去处理。一般是在多层结构中将异常信息抛给上一层去处理。如MVC中控制层将异常交给视图层去做相应处理以展示给用户
      

  5.   

    上面的说得都差不多。“重抛异常会把异常抛给上一级环境中的异常处理程序,同一个try块后续catch字句将被忽略(TIJ上说的)”。不会从接下来的语句中寻找匹配,而是返回上一级环境,但具体是什么环境不懂,期待指点。