java异常处理机制是指程序在运行时可能出现的一些错误它发生在程序运行期间,中断了正在执行的程序的正常指令流。java异常都是对象,都是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常。使用异常保证了程序的健硕性。
java利用try-catch进行异常处理,在开发过程中语法和逻辑的错误并不算异常
执行过程中的异常事件可以分为两类
1)Error:指java虚拟机中无法解决的严重任务,如jvm系统内部错误,资源耗尽等情况。Error是严重错误会导致程序崩溃
2)Exception:是其他编程错误或偶然的外在因素导致的一般性问题,Exception分为两大类:运行时异常和编译时异常
五大运行时异常
1.NullPointException空指针异常
当应用程序试图在需要对象的地方使用null
public static void main(String[] args) {
String name = null;
System.out.println(name.length());
}
2.ArithmeticException数字运算异常
当出现异常的运算条件时,抛出异常
public static void main(String[] args) {
int num1 = 1;
int num2 = 0;
System.out.println(num1/num2);
}
3.ArrayLndexOutOfBoundsException数组下标越界异常
用非法索引访问数组时抛出的异常
public static void main(String[] args) {
int i = -1;
int a[]= {1,2,3,4};
System.out.println(a[i]);
}
4. ClassCastException类型转换异常
当试图将对象强制转换成不是实例的例子时,抛出异常
public static void main(String[] args) {
A b =new B();
C c = (C)b;
}
}
class A{
}
class B extends A{
}
class C extends A{
}
5.NumberFormatException数字格式不正确异常
当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当的格式时,抛出异常
public static void main(String[] args) {
String name = "abc";
int i = Integer.parseInt(name);
}
常见的编译异常
编译异常在编译期间就必须处理的异常:
SQLException:操作数据库时操作表发生的异常
IOException:操作文件时发生的异常
FileNotFoundException:当操作一个不存在的文件时发生的异常
ClassNotFoundException:加载类但是该类不存在时发生的异常
EOFException:操作文件到文件末尾发生的异常
IllegalArguementException:参数异常
异常处理的方式
1)try-catch-finally
程序员在代码中捕获发生的异常,自行处理
2)throws
将发生的异常抛出,交给调用者来处理,最顶级的处理者是JVM