package com.wangzhu; import java.util.HashMap; import java.util.Map; /** * 在try、catch、finally塊中,若try中有return語句,則返回try中變量的值,<br/> * 不管try塊外是否對該變量進行了修改, 都不影響try中return的返回值。<br/> * 若finally中有return語句,則忽略try、catch塊中的return語句。<br/> * 若finally中拋出異常,則整個try-catch-finally塊中拋出異常。<br/> * * 注意:<br/> * 盡量在try或者catch中使用return語句,通過finally快中達到對try或者catch返回值的修改是不可行的。<br/> * finally塊中避免使用return語句,因為finally快中如果使用return語句,<br/> * 會顯示的消化掉try、catch塊中的異常信息, 屏蔽了錯誤的發生。<br/> * finally塊中皮面再次拋出異常,否則整個try-catch-finally塊的方法拋出異常,並會消化掉try、catch塊中的異常。<br/> * * @author wangzhu2014-7-20下午8:48:43 * */ public class CatchDemo1 { /** * 返回:try * * @return */ public static String test() { String str = ""; try { str = "try"; return str; } catch (Exception e) { str = "catch"; return str; } finally { str = "finally"; } } /** * 返回:finally * * @return */ public static String test1() { String str = ""; try { str = "try"; return str; } catch (Exception e) { str = "catch"; return str; } finally { str = "finally"; return str; } } /** * 返回:catch * * @return */ public static String test2() { String str = ""; try { str = "try"; Integer.parseInt(null); return str; } catch (Exception e) { str = "catch"; return str; } finally { str = "finally"; } } /** * 返回:finally * * @return */ public static String test3() { String str = ""; try { str = "try"; Integer.parseInt(null); } catch (Exception e) { str = "catch"; return str; } finally { str = "finally"; return str; } } /** * 返回:finally * * @return */ public static String test4() { String str = ""; try { str = "try"; Integer.parseInt(null); return str; } catch (Exception e) { str = "catch"; Integer.parseInt(null); return str; } finally { str = "finally"; // 若去掉return語句則最后會報異常 return str; } } /** * 返回:finally * * @return */ public static String test5() { String str = ""; try { str = "try"; Integer.parseInt(null); return str; } catch (NullPointerException e) { str = "catch"; return str; } finally { str = "finally"; // 若去掉return語句則最后會報異常 return str; } } public static String test6(Map<String, Object> map) { String str = ""; try { str = "try"; map.put(str, str); Integer.parseInt(null); return str; } catch (NullPointerException e) { str = "catch"; map.put(str, str); return str; } finally { str = "finally"; map.put(str, str); // 若去掉return語句則最后會報異常 return str; } } public static void main(String[] args) { System.out.println("try: " + CatchDemo1.test()); System.out.println("finally: " + CatchDemo1.test1()); System.out.println("catch: " + CatchDemo1.test2()); System.out.println("finally: " + CatchDemo1.test3()); System.out.println("finally: " + CatchDemo1.test4()); System.out.println("finally: " + CatchDemo1.test5()); Map<String, Object> map = new HashMap<String, Object>(); System.out.println("finally: " + CatchDemo1.test6(map)); for (String key : map.keySet()) { System.out.println(key + "===" + map.get(key)); } } }