- Throw就是java在程序运行过程中产生的各种不开心
- 首先需要区分“错误Error”和“异常Exception”两个概念
- Java中的错误Error:指业务之外的不开心,比如硬件问题、OS问题、内存问题等导致的不可预测的抽风,比如内存满了,栈满了,系统跪了。
- Java中的异常Exception:就是你写的程序不严谨,JVM不开心,比如除零,空指针,越界。这些异常在程序运行时有JVM抛出来给你。这类异常
- 另外Java还附带赠送了一类异常机制:你可以任性的通过throw的方式主动抛异常,来处理业务上的一些不开心,比如你想花100块,结果兜里只有50块,不开心!抛异常;你想三妻四妾,但是国家规定只能娶一个,不开心,抛异常!
更高级的解释~~~!
- Error是JVM代码在运行时发现OS无法满足它,才抛出来,这些的Error是定义在JVM的源码中,JVM产品不同抛出的Error也不同
- Exception是JVM在运行你写的代码时,发现你代码的逻辑有问题,JVM自动生成的Exception,你的代码本身并不会抛出这些Exception,class文件也不包含Exception定义,因此不用catch住,只是在运行时JVM才会生成,因此叫做RuntimeException或者unchecked Exception
- 附送的Exception是你在写代码时手动throw出来,或者别人手动throw出来的,class文件里面包含了Exception的定义,因此必须catch住,因此叫做checked Exception。比如jdk的io包里面大部分代码都会throw异常,因此io操作大部分才需要trycatch