目标: 常见的运行时异常
运行时异常的概念:
继承自RuntimeException的异常或者其子类,编译阶段是不会出错的,它是在运行时阶段可能出现的错误,运行时异常编译阶段可以处理也可以不处理。
1.数组索引越界异常: ArrayIndexOutOfBoundsException
2.空指针异常 : NullPointerException
直接输出没有问题。但是调用空指针的变量的功能就会报错!!
3.类型转换异常:ClassCastException
4.迭代器遍历没有此元素异常:NoSuchElementException
5.数学操作异常:ArithmeticException
6.数字转换异常: NumberFormatException
小结:
运行时异常都是继承了RuntimeException的,编译阶段一定不会报错,但是
运行阶段可能出现。
异常一旦出现,会从出现异常的点那里直接结束程序!
public class ExceptionDemo {
public static void main(String[] args) {
System.out.println("程序开始。。。。。。");
/** 1.数组越界异常:ArrayIndexOutOfBoundsException */
int[] arrs = {10 ,20 ,30};
System.out.println(arrs[0]);
System.out.println(arrs[1]);
System.out.println(arrs[2]);
// System.out.println(arrs[3]);// 出现了该异常,程序在此死亡!
/** 2.空指针异常 : NullPointerException */
String name = "itheima";
System.out.println(name.length()); // 7
name = null ;
System.out.println(name); // null
// System.out.println(name.length());// 出现了该异常,程序在此死亡!
/** 3.类型转换异常:ClassCastException */
Object rs = "abc";
// Integer it = (Integer) rs; // 出现了该异常,程序在此死亡!
/** 4.迭代器遍历没有此元素异常:NoSuchElementException*/
List<String> names = new ArrayList<>();
Collections.addAll(names , "张无忌","赵敏");
Iterator<String> it = names.iterator();
System.out.println(it.next());
System.out.println(it.next());
// System.out.println(it.next()); // 出现了该异常,程序在此死亡!
/** 5.数学操作异常:ArithmeticException */
// int c = 10 / 0 ; // // 出现了该异常,程序在此死亡!
/** 6.数字转换异常: NumberFormatException*/
String num = "anc";
// Integer i = Integer.valueOf(num);
System.out.println("程序结束。。。。。。");
}
}