看完scala,發現java中finally允許返回結果真的是一種極其錯誤的設計。 – JAVA編程語言程序開發技術文章

[java]
try{ 
   return x; 
}catch(Excpeiont e){ 
   return y; 

finally{ 
  return z; 

這樣的代碼無論如何都返回z,那麼上面的任何return都顯得沒有意義。所以我們在絕大多數情況下都不會在finally中使用return語句,
因為這使得這個方法幾乎返回一個恒定的結果。但這並不能保證一個水平很差的程序員在finally中返回結果。我說的是即使你有需要這樣做,
也完全可以換個方式來達到目前的,而不是寫出在finally中返回結果這樣爛的代碼,因為這本身是不符合邏輯的。

既然沒有必要在finally中返回結果,又會引起一些人的誤用,為什麼不直接禁止在finally中返回結果呢?它本來的目的就是為瞭保證必要的“操作”
而不是“返回結果”。所以完全可以設計為在finally中禁止return語句,這樣既達到本來的目的,又不會使用任何人誤用。比如
[java] 
try{   
   return x;   
}catch(Excpeiont e){   
   return y;   
}   
finally{   
   close(z);   
}   
非常可惜的是這個意見還不能向JLS提出,因為從java一出生已經這樣設計瞭,突然在某一版本中改變的話,向前兼容就成瞭一句空話。

發佈留言