java 异常

2333

记录一下

异常分类图

error.jpg

1.异常处理

通过5个关键字来实现: try、catch、finally、throw、throws。

  • try: 执行可能产生异常的代码
  • catch: 捕获异常
  • finally: 无论是否发生异常代码总能执行
  • throws: 在成员方法上声明可能要抛出的异常,可以是抛出与 throw 对象相同的类型或其父类,如: public String list(Model model) throws Exception、… {}
  • throw: 手动抛出异常, throw new SeckillException("…")
try-catch-finally

try 块后可接零个或多个 catch 块,如果没有 catch 块,则必须跟一个 finally 块。

public class Main { public static int testAge(int age) { try { if (age < 18) { throw new Exception("错误异常"); } } catch (Exception e) { e.printStackTrace(); return 233; } finally { return -233; } } public static void main(String[] args) { System.out.println(testAge(31)); } }

上面代码运行会得到 -233,语句运行的主要流程如下图:
trycatchfinally.jpg

2.异常连

将异常发生的原因一个传一个串联起来,即把底层的异常信息传给上层,这样逐层抛出。

public class Main { public static void testAge(int age) throws Exception { if (age < 18) { throw new Exception("错误异常"); } } public static void testAge2(int age ) throws Exception { try { testAge(11); } catch (Exception e) { if (age > 30) { throw new Exception("错误异常2" , e); } } } public static void main(String[] args) { try { testAge2(31); } catch (Exception e) { e.printStackTrace(); } } }

扩展阅读

一道无聊又有趣的 try catch 面试题