捕获异常
快捷键:Ctrl + Alt + T 快速生成捕获异常
public class Test {
public static void main(String[] args) {
int a = 1, b = 0;
//假设要捕获多个异常:从小到大
try { //监控区域
// new Test().a();
System.out.println(a/b);
} catch (Exception e) { //catch(想要捕获的异常类型) 捕获异常
System.out.println("变量b不能为零");//出现异常 catch 捕获
} catch (Error t){
System.out.println("Error");
} catch (Throwable r){
System.out.println("Throwable");
} finally { //善后工作,无论如何都会输出
System.out.println("finally");
}
//finally 可以不要finally
}
public void a(){
b();
}
public void b(){
a();
}
}
/*
try { //监控区域
System.out.println(a/b);
} catch (Exception e) {
System.out.println("变量b不能为零");//出现异常 catch 捕获
} finally { //善后工作,无论如何都会输出
System.out.println("finally");
}
//finally 可以不要finally
*/
自定义异常
使用java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需要继承Exception类即可。
在程序中使用自定义异常类,大体可分为一下步骤:
1、创建自定义异常类
2、在方法中通过throw关键字抛出异常对象
3、如果当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throw是关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
4、再出现异常方法的调用者中捕获并处理异常
//自定义异常类 直接继承Exception
public class MyException extends Exception{
//传递参数>10
private int detail;
public MyException(int a){
this.detail = a;
}
@Override
public String toString() {
return "MyException{" + detail + '}';
}
}
import java.util.Scanner;
public class Test {
static void test(int a) throws MyException {
System.out.println("传递的参数为:" + a);
if (a>10){
throw new MyException(a); //抛出
}
System.out.println("OK");
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
try {
test(i);
} catch (MyException e) {
System.out.println("变量大于10出错"+e);
}
}
}