异常一旦出现了,如果没有提前处理,程序就会退出JVM虚拟机
而终止。
package com.app.d4_exception;
/**
目标:学习异常
*/
public class ExceptionDemo {
public static void main(String[] args) {
// 不处理异常,程序就会终止
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]);
System.out.println("------程序截止------");
}
}
Error:
Exception:java.lang包下,称为异常类,它表示程序本身可以处理的问题。
简单来说:
1、异常是什么?
2、异常分为几类?
3、学习异常的目的?
运行时异常:一般是程序员业务没有考虑好或者是编程逻辑不严谨引起的程序错误!
package com.app.d5_exception_runtimeException;
import java.util.stream.Stream;
/**
目标:理解什么是运行时异常。
运行时异常继承自 RuntimeException,编译阶段不会报错,运行时才可能会出错误!!
*/
public class ExceptionDemo {
public static void main(String[] args) {
System.out.println("程序开始...");
/** 1、数组索引越界异常:ArrayIndexOutOfBoundsException */
int[] arr = {1, 2, 3};
// 索引: 0 1 2
System.out.println(arr[2]);
// System.out.println(arr[3]); // 报错:数组索引越界了!程序终止
/** 2、空指针异常:NullPointerException。直接输出没有问题,但是调用空指针的变量的功能就会报错!*/
String name = null;
System.out.println(name); // null
// System.out.println(name.length()); // 报错:地址为空,无法访问。程序终止
/** 3、类型转换异常:ClassCastException */
Object o = 25;
// String s = (String) o; // 报错:25是整型类型,不能转换为字符串类型
/** 4、数学操作异常 */
// int c = 10 / 0; // 报错:0不能作为除数
/** 5、数字转换异常 */
// String number = "55"; // 没有问题!
// String number = "55asff"; // 报错:字母无法转换成整数类型
// Integer it = Integer.valueOf(number);
// System.out.println(it);
System.out.println("程序结束.");
}
}
1、编译时异常的特点
1、默认会在出现异常的代码那里自动的创建一个异常对象;
2、异常会从方法中出现的点这里抛出给调用者,调用者最终抛出给JVM虚拟机;
3、虚拟机接收到异常对象后,先在控制台直接输出异常栈信息数据;
4、直接从当前执行的异常点干掉当前程序;
5、后续代码没有机会执行了,因为程序已经终止了。
1、默认异常处理机制