try{ }catch(Exception e){ }finally{ }
java异常处理在编程中很常见,将可能抛出异常的语句放在try{}中,若有异常抛出,则try{}中抛出异常语句之后的语句不再执行。catch (Exception e) {}抓取异常并进行处理;若无异常,catch中的语句不执行。finally{}中主要做善后工作,如资源回收。无论是否有异常抛出,finally中的语句都会执行。finally中的语句将会在异常捕获机制退出前被调用。
下面来看三个简单的例子:
例1、
public static void test1() { try { HttpURLConnection connection = (HttpURLConnection) new URL("").openConnection(); System.out.println("try"); } catch (Exception e) { System.out.println("exception"); } finally { System.out.println("finally"); } System.out.println("end"); } /* 输出: exception finally end */
例2、
public static void test1() { try { HttpURLConnection connection = (HttpURLConnection) new URL("http://www.baidu.com").openConnection(); System.out.println("try"); } catch (Exception e) { System.out.println("exception"); } finally { System.out.println("finally"); } System.out.println("end"); } /* 输出: try finally end */
例3、
public static void test1() { try { HttpURLConnection connection = (HttpURLConnection) new URL("http://www.baidu.com").openConnection(); System.out.println("try"); return; } catch (Exception e) { System.out.println("exception"); } finally { System.out.println("finally"); } System.out.println("end"); } /* 输出: try finally */
首先来第一个例子,HttpURLConnection connection = (HttpURLConnection) new URL("").openConnection();url地址为空,抛出异常,try中之后的语句不在执行,直接跳到catch{}中,所以输出结果中没有"try"。
第二个例子中,url可用,没有抛出异常,所以catch{}中的语句不执行,所以输出结果中没有"catch"。
在例3中,因为没有异常抛出,所以catch不执行。因为try中已经有return了,所以之后的语句不在执行。在return之前,按照异常捕获机制,在退出前将调用finally。
时间: 2024-10-12 23:42:15