异常:程序在运行时发生错误。 |
异常基本语法 |
我们发现
,
一旦
try
中出现异常
,
那么
try
代码块中的程序就不会继续执行
,
而是交给
catch
中的代码来执行. catch 执 行完毕会继续往下执行
try中有可能出现的异常
/**
* 即便是有异常我们也照样执行输出了。
* 有异常的部分在try中,处理异常的部分在catch中
*/
public class ExceptionTest {
public static void main(String[] args) {
int[] data = {1, 2, 3};
System.out.println("before");
try {
// 可能会出现异常的地方
System.out.println(data[100]);
}catch (ArrayIndexOutOfBoundsException e){
//打印出现异常调用的栈
e.printStackTrace();
System.out.println("异常产生了");
}
System.out.println("after");
}
}
异常的种类有很多,我们要根据不同的业务场景来决定; 对于比较严重的场景应该让程序直接崩溃; 其他的场景可以选择记录错误日志,通过监控报警程序及时通知,可恢复的场景选择重试; |
关于---调用栈 方法之间存在相互的调用关系。 在JVM中有一块内存空间称为“虚拟机栈”,专门为存储方法之间的调用关系,当代吗中出现异常 ,我们可以调用e这个对象的printStackTrace()就可以打印异常位置和原因。 e.printStackTrace(); 查看出现异常代码的调用栈。 “e”就是异常对象,e前面是类名称,起个什么名字都一样。 |
/**
* catch只能处理对应种类的异常
* 此时的catch不能捕获空指针异常,因为异常类型不匹配
*/
public