异常
Exception类或是其子类
throw new inputMismatchException(); 数据格式不匹配
ArithmeticException 算数异常(/ by zero)
NullPointerException 空指针异常
运行时异常不一定要处理
Scanner in = new Scanner(System.in);
in num1=0;
if (in.hasNexint()/*判断输入的是不是一个整数返回的是布尔类型*/){
num1=in.nextInt();
}
System.err.println("输入错误");/*对错误提示输出*/
异常处理机制
package Exception1;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Exception1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
try {
//可能发生异常的代码
System.out.println("请输入除数:");
int num1 = in.nextInt();
System.out.println("请输入被除数");
int num2 = in.nextInt();
System.out.println(num1 + "/" + num2 + "=" + num1 / num2);
}
catch (InputMismatchException ex/*捕捉异常对象*/) {
//异常代码处理
System.out.println("数据格式不匹配");
ex.printStackTrace();
System.out.println(ex.getMessage()/*异常信息提示*/);
return;
}
catch (ArithmeticException ex/*捕捉异常对象*/) {
//异常代码处理
System.out.println("算数异常");
ex.printStackTrace();
System.out.println(ex.getMessage()/*异常信息提示*/);
System.exit(1);
}
catch (Exception ex/*捕捉异常对象*/) {
//异常代码处理
ex.printStackTrace();
System.out.println(ex.getMessage()/*异常信息提示*/);
}
finally {
System.out.println("程序完成");
}
}
}
Catch(多重)
可以捕捉多种类型
按顺序(先子类,后父类)
常见的异常类型
finally(不管怎样都执行,只有一种情况catch中System.exit(1);终止程序
catch中的return,遇到return先执行finally在返回到return
异常声明
throws
声明方法可能抛出的异常
跟在方法后面写
可声明抛出多个异常,异常之间用逗号隔开
抛出异常
throw程序员手动抛出异常
自定义异常
Exceptin:本身自带构造方法
package Exception1;
/**
*自定义的:性别赋值不正确时爆发该异常
**/
public class SexException extends Exception {
public SexException(String message){
super(message);
}
}
FileNotFoundException
IOException
检查时异常一定要处理(报红线时)