1 列举一些列举常见的运行时异常
运行时异常都是 RuntimeException 子类异常
NullPointerException - 空指针异常
ClassCastException - 类转换异常
IndexOutOfBoundsException - 下标越界异常
ArithmeticException - 计算异常
IllegalArgumentException - 非法参数异常
NumberFormatException - 数字格式异常
UnsupportedOperationException 操作不支持异常
ArrayStoreException - 数据存储异常,操作数组时类型不一致
BufferOverflowException - IO 操作时出现的缓冲区上溢异常
NoSuchElementException - 元素不存在异常
InputMismatchException - 输入类型不匹配异常
2 Java中如何进行异常处理?
throws、throw、try、catch、finally分别如何使用?
把各种不同的异常进行分类,每个异常都是一个对象,是 Throwable 或其子类的实例
一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用对象的方法可以捕获到这个异常并进行处理,Java 中的异常处理通过 5 个关键词实现:throw、throws、try、catch 和 finally
定义方法时,可以使用 throws 关键字抛出异常,方法体内使用 throw 抛出异常,使用 try 执行一段代码,当出现异常后,停止后续代码的执行,跳至 catch 语句块,使用 catch 来捕获指定的异常,并进行处理finally 语句块表示的语义是在 try、catch 语句块执行结束后,最后一定会被执行
3 运行时异常与受检异常有何异同
异常表示程序运行过程中可能出现的非正常状态
运行时异常,表示程序代码在运行时发生的异常,程序代码设计的合理,这类异常不会发生
受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发
Java编译器要求方法必须声明抛出可能发生未被捕获的受检异常,不要求必须声明抛出运行时异常
4 Java中异常处理机制
Java 异常的结构
Throwable
–Error:是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题
–Exception:
–RuntimeException:运行时异常,编译通过了,但运行时出现的异常
–非 RuntimeException:编译时(受检)异常,编译器检测到某段代码可能会发生某些问题,需要程序员提前给代码做出错误的解决方案,否则编译不通过
异常产生的原理
java 对异常默认的处理方式,是将问题抛出给上一级
抛出之前,java 会根据错误产生的异常类,创建出该类的对象,底层并通过 throw 关键字将异常抛出给上一级,不断向上抛出,直到抛给了JVM 虚拟机,虚拟机拿到异常之后,就会将错误的原因和所在的位置,打印在控制台
异常的处理方式
try catch 处理:自己将问题处理掉,不会影响到后续代码的继续执行
throw 抛出:问题自己无法处理,可以通过 throw 关键字,将异常对象抛出给调用者。如果抛出的对象是 RuntimeException 或 Error,则无需在方法上 throws 声明;其他异常,方法上面必须进行 throws 的声明,告知调用者此方法存在异常