异常是指程序中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。
异常发生在程序运行期间,它影响了正常的程序执行流程。
类别 | 说明 |
---|---|
检查型异常 | 程序员无法预见,如:用户错误或问题引起的异常、打开一个不存在的文件,不能在女编译时忽略 |
运行时异常 | 程序员可以避免,可以在编译时忽略 |
错误 | 错误不是异常,是脱离程序员控制的问题,编译时检查不到,如:栈溢出错误 |
举例 | 说明 |
---|---|
RuntimeException | 运行时异常 |
ArrayIndexOutOfBoundsException | 数组下标越界 |
NullPointerException | 空指针异常 |
ArithmeticException | 算术异常 |
MissingResourceException | 丢失资源 |
ClassNotFoundException | 找不到类 |
Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常是,Java虚拟机(JVM)一般会选择终止线程;
Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。
快捷键:ctrl + alt + T
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 0;
int[] c = {1, 2, 3, 4};
try {//try监控区域
// System.out.println(a/b);
System.out.println(c[4]);
} catch (ArithmeticException e) {//想要捕获的异常类型(从小到大)
System.out.println("算术异常");
} catch (ArrayIndexOutOfBoundsException e) {//想要捕获的异常类型(从小到大)
System.out.println("数组下标越界");
} catch (RuntimeException e) {//想要捕获的异常类型(从小到大)
System.out.println("运行时异常");
} finally {
System.out.println("程序错误,请修改!");//处理善后工作,如:关闭IO资源
}
}
}
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {
System.out.println(new Main().f(a,b));
} catch (ArithmeticException e) {//方法上主动抛出后,这里会自动识别
throw new RuntimeException(e);
}
}
//假设这个方法处理不了这个异常,就要在方法上抛出异常
public int f(int a, int b) throws ArithmeticException{
if (b == 0) {
throw new ArithmeticException();//主动抛出异常,一般用在方法中
}else{
return a / b;
}
}
}
用户自定义异常类,需要继承Exception类
,使用 extends Exception
//继承 Exception 类-----自定义的异常类
public class MyException extends Exception {
//传递数字 大于10
private int detail;
public MyException(int a) {
this.detail = a;
}
//异常打印信息
@Override
public String toString() {
return "MyException{" +
detail +
'}';
}
}
class Test {
//可能会存在异常的方法
static void test(int a) throws MyException {
System.out.println("传递的参数为:" + a);
if (a > 10) {
throw new MyException(a);//抛出
}
System.out.println("OK");
}
public static void main(String[] args) {
try { //捕获
test(11);
} catch (MyException e) {
System.out.println("MyException => " + e);
}
}
}
说在最后:
✍创作不易,如果觉得文章写得还可以的话,就不要吝啬你的 啦~ ✍