实际问题
public static void main(String[] args) {
int num1 = 10;
int num2 = 0;
int res = num1 / num2;
System.out.println("程序继续运行....");
}
结果
出现数学运算异常 ArithmeticException
解决方案
对异常进行捕获,保证程序可以继续运行而不是暂停
public static void main(String[] args) {
int num1=10;
int num2=0;
try {
int res = num1 / num2;
}catch(Exception e){
System.out.println("出现异常原因="+e.getMessage());//输出异常信息
}
System.out.println("程序继续运行");
}
结果
结论
num1/num2=》10/0
当执行到num1/num2因为num2=0,程序就会出现(抛出)异常
就会导致整个系统崩溃
java设计者,提供了一个叫异常处理机制来解决该问题
int res=num1/num2
如果我们,认为一段代码可能出现异常或者问题,可以使用try-catch异常处理机制来解决
从而保证程序的健壮性
如果进行异常处理,那么即使出现了异常,程序可以继续执行,而不是暂停在这一块
java语言中,将程序执行中发生的不正常行为情况称为“异常”(开发过程中的语法错误和逻辑错误不是异常)
执行过程中所发生的异常事件可分为两大类:
error(错误):java虚拟机无法解决的严重问题
如:jvm系统内部错误、资源耗尽等严重情况,比如:stackOverflowError【栈溢出】和oom【out of memory】
error是严重错误,程序会崩溃
exception:其它因编译错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理
例如:空指针访问,试图读取不存在的文件,网络连接中断等等
exception分为两大类:运行时异常【程序运行时,发生的异常】和编译时异常【编译时,编译器检查出的异常】
常见的运行时异常
NullPointerException空指针异常 ArithmeticException数学运算异常 ArrayIndexOutOfBoundsException数组下标越界异常 ClassCastException类型转换异常 NumberFormatException数字格式不正确异常