1.Java异常:在程序运行过程中,如果JVM检测出一个不可能执行的操作,就会出现执行时的错误.例如数组下标越界、以0作为除数.异常是运行错误。而运行时错误会作为异常抛出,异常就是一种对象,表示阻止正常运行的错误或者情况。如果异常没有被处理,那么程序就会异常终止。所以我们要学习怎么样处理异常,以使程序可以继续运行或者优雅地终止.
2.异常处理的规范:异常应该从方法抛出,而由方法的调用者来捕获和处理该异常,以至于调用者决定是否终止程序.
import java.util.Scanner;
public class DriverExceptionTest {
public static int quotient(int number1,int number2){
if(number2==0){
throw new ArithmeticException();//如果程序运行错误则会抛出异常
}
return number1/number2;
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int int1 = scanner.nextInt();
int int2 = scanner.nextInt();
try{
int result = quotient(int1, int2);//调用方法
System.out.println("结果为:"+result);
}catch (ArithmeticException ex){//接受异常,自己定义进行下一步处理
System.out.println("不能输入除数为0");
}
System.out.println("程序结束");
}
}
3.因此使用异常处理的优点就是:它能使方法抛出一个异常给它的调用者,并由调用者处理该异常.
4.异常类通常有三种类型:系统错误,异常和运行时的错误.
4-1.系统错误使用Java虚拟机抛出的,用Error类表示。Error类描述的是内部系统错误。这样的错误很少发生,如果发生,除了通知用户以及尽量稳妥地终止程序外,几乎什么都不能做,如LinkageError,VirtualMachineError.
4-2 异常是用Exception类表示的,它描述的是你的程序和外部环境所引起的错误,这些错误能被程序捕获和处理.如ClassNotFoundException,IOException.
4-3 运行时异常是用RuntimeException类来表示的,它描述的是程序设计错误,例如错误的类型转换、访问一个越界数组或数值错误。运行时异常通常表示编程错误.如ArithmeticEception(一个整数除以0)、NullPointerException(试图通过一个null引用变量访问一个对象)...
5.RuntimeException、Error以及它们的子类都称为免检异常。所有其它的异常都称为必检异常(意味着编译器会强制程序员检查并通过try-catch处理它们.
6.从异常中获取消息:最常用的就是ex.printStackTrace():意味着在控制台上打印Throwable对象和它的调用栈的跟踪信息.
import java.util.Scanner;
public class DriverExceptionTest {
public static int quotient(int number1,int number2){
if(number2==0){
throw new ArithmeticException();//如果程序运行错误则会抛出异常
}
return number1/number2;
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int int1 = scanner.nextInt();
int int2 = scanner.nextInt();
try{
int result = quotient(int1, int2);//调用方法
System.out.println("结果为:"+result);
}catch (ArithmeticException ex){//接受异常,自己定义进行下一步处理
System.out.println("不能输入除数为0");
ex.printStackTrace();//使用printStackTrace()方法进行追踪
}
System.out.println("程序结束");
}
}