java 异常

Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)
执行过程中所发生的异常事件可以分为两类:

  • Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等情况。
  • Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如:空指针访问、试图读取不存在的文件、网络连接中断等。Exception分为两类:运行时异常编译时异常

看下面代码:

public class Test {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 0;
        System.out.println(num1 / num2);
    }
}

运行结果
在这里插入图片描述
当执行到num1 / num2时,除数是0,是一个异常。

我们可以用异常处理机制来解决这些情况。
如果认为一段代码可能出现异常/问题,可以使用try-catch异常处理机制来解决,从而保证程序的健壮性。

public class Test {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 0;
        try {
            System.out.println(num1 / num2);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述
如果进行异常处理,那么即使出现了异常,程序也可以继续执行。
异常体系:
java 异常_第1张图片
编译异常和运行异常发生时间:
java 异常_第2张图片
java 异常_第3张图片
运行时异常:编译器不要求强制处理的异常。一般是指编程时的逻辑错误,是程序员应该避免其出现的异常。
对于运行时异常,可以不作处理,因为这类异常很普遍,若全处理可能对程序的可读性和运行效率产生影响。
编译时异常:是编译器要求必须处置的异常。

常见的运行时异常

  • NullPointerException:空指针异常
  • ArithmeticException:数学运算异常
  • ArrayIndexOutOfBoundsException:数组下标越界异常
  • ClassCastException:类型转换异常
  • NumberFormatException:数字格式不正确异常

NullPointerException:空指针异常

当应用程序试图在需要对象的地方使用null时,抛出该异常。

ArithmeticException:数学运算异常

当出现异常的运算条件时,抛出次异常。

ArrayIndexOutOfBoundsException:数组下标越界异常

数组下标越界异常,用非法索引访问数组时抛出的异常。如果索引为负或大于数组大小。

ClassCastException:类型转换异常

当试图将对象强制转为不是实例的子类时,抛出该异常。

NumberFormatException:数字格式不正确异常

当应用程序试图将字符串转为一种数值类型,单该字符串不能转为适当格式时,抛出该异常。

异常处理

异常处理就是当发生异常时,对异常处理的方式。
异常处理的的方式:

  • try-catch-finally:程序员在代码中捕获发生的异常,自行处理
    java 异常_第4张图片
  • throws:将发生的异常抛出,交给调用者(方法)来处理。
    java 异常_第5张图片

try-catch-finally

java 异常_第6张图片

public class Test {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 0;
        try {
            System.out.println("Begin");
            System.out.println(num1 / num2);
            System.out.println("End");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

public class Test {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 0;
        try {
            System.out.println("Begin");
            System.out.println(num1 / num2);
            System.out.println("End");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("Finally");
        }
    }
}

在这里插入图片描述

throws

java 异常_第7张图片

https://www.bilibili.com/video/BV1fh411y7R8?p=454&vd_source=13dfbe5ed2deada83969fafa995ccff6

你可能感兴趣的:(Java,java,开发语言)