Java中所有的异常都来自顶级父类Throwable
Throwable下有两个子类Exception和Error
Error(错误)
是指程序无法处理的问题,一旦出现错误,整个程序会崩溃,程序将被迫停止运行,比如说OOM(内存溢出)
Exception(异常)
指程序本身可以处理的问题,不会导致程序终止,其中又被分为两大类,运行时异常(RunntimeException),编译时异常(检查异常)(CheckedException)
运行时异常
运行时异常常常发生在程序运行的过程中,会导致程序当前线程执行失败,如空指针异常,下标越界异常等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理
这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常发生(比如当出现数组下标越界时,不应该抛出异常,而是应该修改代码,让程序不出现这个问题)
编译时异常
编译时异常常常发生在程序编译的过程中,是必须进行的异常处理,如果不处理,会导致程序编译不通过(比如赋值异常 String对象赋值了一个int类型),一般在写代码的时候IDEA就会自动显示让我们处理
运行时异常Java编译器不会检查他,也就是说即使没有捕获或抛出异常,编译也会通过
但是编译型异常如果不处理,编译就不能通过
参考文章
Java:详解Java中的异常(Error与Exception)_王小二(海阔天空)-CSDN博客_java中的异常
膜拜!华为大牛透彻讲解Java面试100道必考题,不管你工作几年,都得看看!现在免费分享给大家!_哔哩哔哩_bilibili