捕获异常
-
try { //try监控区域
} catch (异常类型) { //catch 捕获异常
} finally {//处理善后工作
}
捕获多个异常,需从小到大捕获
public class Test {
public static void main(String[] args) {
int a = 1, b = 0;
try {//try监控区域
System.out.println(a / b);
} catch (ArithmeticException e) {//catch 捕获异常
System.out.println("程序异常");
} finally {//处理善后工作
System.out.println("finally");
}
//程序异常
//finally
try {
System.out.println(a/b);
}catch (Error e){
System.out.println("Error");
}catch (Exception e){
System.out.println("Exception");
}catch (Throwable e){
System.out.println("Throwable");
}finally {
System.out.println("finally");
}
//Exception
//finally
}
}
抛出异常
- throw 在方法体中
public class Test2 {
public static void main(String[] args) {
new Test2().test(1,0);
}
// Exception in thread "main" java.lang.ArithmeticException
// at oop.异常.Test2.test(Test2.java:10)
// at oop.异常.Test2.main(Test2.java:5)
public void test(int a,int b){
if (b==0){
throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
}
System.out.println(a/b);
}
}
-
throws 在方法名之后
假设方法处理不了异常,可以throws上抛异常 而try catch 处理异常可以让程序继续运行
public class Test2 {
public static void main(String[] args) {
try {
new Test2().test(1,0);
} catch (ArithmeticException e) {
System.out.println("错误");
}
}
//假设这个方法处理不了异常,上抛异常
public void test(int a,int b) throws ArithmeticException{
if (b==0){
throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
}
}
}