目录
Exception: java.lang包下,称为异常类,它表示程序本身可以处理的问题
异常
异常是程序在“编译”或者“执行”的过程中可能出现的问题,注意:语法错误不算在异常体系中。
比如:数组索引越界、空指针异常、数字转换异常、日期格式化异常、类型转换异常、算数异常(数学异常)
异常体系
Error:系统级别问题、JVM退出等,代码无法控制。
Exception: java.lang包下,称为异常类,它表示程序本身可以处理的问题
RuntimeException及其子类:运行时异常(运行时出现的异常),编译阶段不会报错。(空指针异常,数组索引越界异常)
除RuntimeException之外所有的异常:编译时异常(编译时出现的异常),编译期必须处理的,否则程序不能通过编译。(日期格式化异常)。
常见的运行时异常
运行时异常:直接继承自RuntimeException或者其子类,编译阶段不会报错,运行时可能出现的错误。
数组索引越界异常:ArraylndexoutOfBoundsException
空指针异常:NullPointerException,直接输出没有问题,但是调用空指针的变量的功能就会报错。
数学操作异常:ArithmeticException
类型转换异常:ClassCastException
数字转换异常:NumberFormatException
数组索引越界异常:ArraylndexoutOfBoundsException
//数组索引越界异常:ArraylndexoutOfBoundsException
public static void main(String[] args) {
int arr[] = {10, 20, 30};
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
}
}
注意:把后报的错误放到上面,先进的在下面,后进的在上面,后进先出是栈。因此是异常栈信息。
空指针异常:NullPointerException,直接输出没有问题,但是调用空指针的变量的功能就会报错。
//空指针异常:NullPointerException,直接输出没有问题,但是调用空指针的变量的功能就会报错。
public class Cjiande {
public static void main(String[] args) {
System.out.println("开始");
//空指针异常:NullPointerException,直接输出没有问题,但是调用空指针的变量的功能就会报错。
String name=null;
System.out.println(name);//没问题
System.out.println(name.length());
}
}
数学操作异常:ArithmeticException
//数学操作异常:ArithmeticException
int num1 = 10/0;
类型转换异常:ClassCastException
//类型转换异常
Object O=23;
String a= (String) O;
数字转换异常:NumberFormatException
String s="122";
Integer integer=Integer.valueOf(s);
System.out.println(integer);//正常输出
System.out.println("-----------------------");
//数字转换异常:NumberFormatException
String s="122ass";
Integer integer=Integer.valueOf(s);//运行出错,程序终止
System.out.println(integer);