本文共 1441 字,大约阅读时间需要 4 分钟。
在Java中,try-catch-finally是用来处理程序异常的重要机制。try块用于执行可能抛出异常的代码,catch用于处理异常,finally则无论是否发生异常都会执行。
try { System.out.println("执行try"); } catch (Exception e) { System.out.println("执行catch"); } finally { System.out.println("执行finally"); }
执行顺序为:
输出示例:
执行try
执行finally
如果方法中有异常抛出,catch块会处理该异常,finally代码块仍然会在catch之后执行。
try { System.out.println("执行try2"); int i = 1 / 0; System.out.println("执行try2"); } catch (Exception e) { System.out.println("执行catch"); } finally { System.out.println("执行finally"); }
执行顺序为:
输出示例:
执行try
执行catch
执行finally
如果方法有返回值,try-catch-finally中的return语句需要谨慎处理。
(1) 方法正常执行时:
public String testReturn() { try { System.out.println("返回try"); return "try"; } catch (Exception e) { System.out.println("返回catch"); return "catch"; } finally { System.out.println("返回finally"); return "finally"; }}
输出:
返回try
返回finally
最终返回值为:"finally"
(2) 方法抛出异常时:
public String testReturn2() { try { int i = 1 / 0; System.out.println("返回try"); return "try"; } catch (Exception e) { System.out.println("返回catch"); return "catch"; } finally { System.out.println("返回finally"); return "finally"; }}
输出:
返回catch
返回finally
最终返回值为:"finally"
在处理try-catch-finally时,finally代码块始终会在try和catch之后执行。如果方法有返回值,try、catch和finally中的return语句都会影响最终返回值。需要注意try和catch中的return会被finally覆盖,除非finally中也有return语句。
转载地址:http://fpci.baihongyu.com/