应该没有区别吧,finally块只会执行一次。

解决方案 »

  1.   

    我是说在性能上,比如速度什么的,因为在代码一中 try{..}中包含一段很长且很复杂的计算代码,而代码二中这段代码确在try{...}外面执行的。
      

  2.   

    难下定论. 为什么呢?因为使用结构化异常处理都会以牺牲一些性能为代价.
    它的流程大致如下:当有异常时,清除一些资源后跳至
    catch块再执行,而finally呢?则不管是否有异常也必
    定会执行到, 即使在try块中有return或goto语句时,
    所以如果你的代码:
       /*
          这里将产生很多且复杂的逻辑运算,但是由于不涉及I/O操作,所以将不会产生什么错误。
       */ 
    有类似这样的语句,它将会在第一种情况下做许多额外
    处理,从而导致性能上的下降.否则,应该执行性能就没什么区别. 还有一关键字leave. 建议使用.
      

  3.   

    如果你那段复杂代码中没有return的话,就没有什么区别
    return会降低try-catch-finally的性能,所以一般使用leave
    另外,嵌套的try-chatch也会降低性能。
      

  4.   

    谢谢 freelybird(阿愚) 的叙述。能否讲讲try...catch...的捕获错误机制?