java的异常类
Throwable
Throwable是Error和Exception的父类,用来定义所有可以作为异常被抛出来的类。
Exception
什么是异常:程序运行过程中发生了无法预判的结果,需要进行异常处理。
Exception可以捕捉所有异常,但无法分辨异常类型。
异常捕捉
try…catch…finally
算数异常
try {
Scanner scan = new Scanner(System.in);
System.out.println("输入除数a,被除数b");
int a = scan.nextInt(), b = scan.nextInt();
int c = a / b;
System.out.println(a + "÷" + b + "=" + c);
}catch (ArithmeticException e){//异常捕捉,捕捉算数异常
System.out.println("除法运算中,除数不能为0");
}finally {
System.out.println("不管有没有发生异常,都会运行这里");
}
输出结果
类型异常
catch (InputMismatchException e){//捕捉类型异常
System.out.println("输入数据类型错误");
System.out.println("请重新输入");
}
输出结果
下标溢出
catch (ArrayIndexOutOfBoundsException e){
System.out.println("下标溢出");
}
无法判断捕捉的异常
catch (Exception e){//无法判断捕捉到的异常
System.out.println("发生了异常,信息" + e.toString());
}
finally
finally {
System.out.println("不管有没有发生异常,都会运行这里");
}
finally优先级很高,即使异常中有return也无法跳出,依旧执行
异常抛出
throws:当前系统代码不做异常捕捉,而是通过方法调用,把异常提交到上一层方法去处理的操作
public static void main(String[] args) {
try {
int a = method02("2a");
System.out.println(a);
}catch (NumberFormatException e){
System.out.println("数字转换异常");
}
}
/*
* 异常抛出throws
* NumberFormatException 数字转换异常
* 使用异常抛出必须写详细注解
* */
public static int method02(String str) throws NumberFormatException{
int a = Integer.parseInt(str);
return a;
}
结果输出
自定义异常信息
自定义程序运行的异常,相当于一个判断语句。
public static void method04(String sex) throws SexException{
if (!(sex.equals("男") || sex.equals("女"))){
throw new SexException("性别不男不女不行!");
}
}
class SexException extends Exception{
public SexException(String msg){
super(msg);
}
}
Error
Error描述的是Java的错误,错误不可用代码解决,发生错误的原因与java虚拟机、编程环境等相关,应用程序无法查找。