一、异常的判断
1、异常 发生时,若不处理,则无法完成完整程序的运行。
当用户输入的x 、y (不为零)是数字的时候,那么整个程序是可以正常运行的。但是用户如果输入的不是数字,或者y为零的时候那么程序就会报错,中断运行。这就是其中一种异常。
public static void main(String[] args){ test(); } private static void test() { Scanner input = new Scanner(System.in); System.out.println("请输入一个数字"); int x = input.nextInt(); System.out.println("请再输入一个数字"); int y = input.nextInt(); System.out.println(x / y); } }
且会提示错误的原因。
二、当异常发生时的处理方法
1、使用 try {
// 可能发生异常的程序代码
} catch(捕获异常发生的类型){
// 采取的措施
} finally{
//异常程序的统一出口(无论程序是否发生异常。只要非强制中断程序,则必 然执行)
}
注意事项:1.不能单独使用catch。
2.catch和finally可以只保留其中一个
import java.util.InputMismatchException; import java.util.Scanner; public class Test1 { public static void main(String[] args){ test(); } public static int test() { try { Scanner input = new Scanner(System.in); System.out.println("请输入一个数字"); int x = input.nextInt(); System.out.println("请再输入一个数字"); int y = input.nextInt(); System.out.println(x / y); System.out.println("处理完毕"); }catch(InputMismatchException x){ System.out.println("必须输入数字啊."); return test(); //捕捉到异常,要让程序正常运行下去,则重新调用test(); }catch(ArithmeticException x){ System.out.println("除数不能为0啊."); return test(); } return 0; } }
2、使用throws/throw解决异常
1、代码在没运行时就显示异常,则用throws声明(即将异常抛出)
例:定时关机的一个程序。若不将异常抛出则无法运行程序。
public class test1 { public static void main(String[] args) { Runtime.getRuntime().exec("shutdown -s -t 3600"); } } //上面的程序无法执行,可以将可能发生的异常抛出去 public class test1 { public static void main(String[] args) throws IOException{ Runtime.getRuntime().exec("shutdown -s -t 3600"); } } //将可能发生的IOException异常抛出
2、在异常发生的代码后抛出异常。
抛出一个 RuntimeException异常对象,必须捕获或抛给调用者
if(age<0 || age>180){ //设置一个异常 RuntimeException e = new RuntimeException("年龄不合理"); throw e;//将异常抛出且声明错误原因是年龄不合理 }else{ this.age = age; }