Java异常的捕获与处理
程序员文章站
2024-02-20 14:42:52
...
异常的捕获与处理
1.
-
Exception
异常是一般开发中需要关注的。Error是程序还未执行出现的错误,开发者无法处理。 -
在进行多个异常同时处理时,要把捕获范围大的放在捕获范围小的后面,确保了错误信息明确的同时,保证了错误能得到处理。
5.
-
若主方法也向上抛出异常,则表示此异常将由jvm来处理。
-
例子:
public class MyException extends Exception { public MyException() { super(); } public MyException(String message) { super(message); } } // 使用try...catch处理 public class Main { public static void main(String[] args) { // 未处理,编译不会通过 // throw new MyException("我的错!"); // 捕获了,编译可以通过 try { throw new MyException("错了"); } catch (MyException e) { // e.printStackTrace(); System.out.println("出错了"); } } } // 向上抛出异常 public class Main2 { public static void main(String[] args) throws MyException { throw new MyException(); } }
-
Exception 的大多直接子类,此类异常需要直接捕获处理,否则编译时会提示必须捕获。例如:DataFormatException
-
RuntimeException 及其子类,一般不进行强制处理,处不处理都可以。例如:ArithmeticException
-
assert
一般用于调试和测试,jvm断言默认关闭。不要让断言处理业务流程。// 例子 public class AssertTest { public static void main(String[] args){ int a = 10; assert a == 100: "a 不为 100"; System.out.println(a); } } // 编译运行 javac AssertTest.java java -ea AssertTest Exception in thread "main" java.lang.AssertionError: a 不为 100 at AssertTest.main(AssertTest.java:9)