java异常分为哪两类?Java异常区别介绍

在进行java开发的时候,我们经常会遇到java异常,面对这种情况,java人员肯定要及时排查问题,解决异常情况,恢复程序的正常运行,那java异常分为哪两类?下面来我们就来给大家讲解一下。

按照异常需要处理的时机分为编译时异常(也叫受控异常)也叫 CheckedException 和运行时异常(也叫非受控异常)也叫 UnCheckedException。Java认为Checked异常都是可以被处理的 异常,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked 异常,该程序在编译时就会发生错误无法编译。

编译时异常和运行时异常的区别是什么?

编译时异常一般发生的概率比较高。对于一些发生概率高的异常,需要在编译时预先对其处理。

运行时异常一般发生的概率很低。你可以预先处理,也可以不处理。

假设java中没有对异常进行划分,没有分编译时异常和运行时异常,所有的异常都需要在编写阶段对其预处理,将是怎样的效果?

首先,如果这样做的话,程序肯定是绝对的安全。

但是程序员就太累,到处都是处理异常的代码,显得很乱。

java中对异常的处理方式包括两种方式:

第一种:在方法声明的位置上,使用throws关键字,抛给上一级。谁掉用我我就抛给谁。

第二种:使用try…catch语句进行异常的捕捉。

异常发生之后,如果选择了上抛,抛给了调用者,调用者需要对这个异常继续处理,同样调用者处理这个异常也有两种方式。

注意:java中异常发生之后如果一直上抛,最终抛给了main方法,main方法继续上抛,抛给了调用者JVM,JVM知道这个异常发生,只有一个结果,终止程序执行。

测试代码:

public class Test03
{
    public static void main(String[] args)
    {
        System.out.println(100 / 0);
        /*
        * 程序执行完100/0,发生了ArithmeticException异常,底层new了一个ArithmeticException对象
        * 因为没有进行捕捉异常,所以进行异常上抛,抛给调用者main方法,main方法也没有处理,
        * 将这个异常抛给了JVM,JVM最终终止程序的执行。
        *
        * ArithmeticException 继承 RuntimeException,属于运行时异常
        * 在编写阶段不需要对这种异常进行预先处理,编译通过。
        *
        * */
        System.out.println("hello world!"); // 没有执行
    }
}

Java异常就是编译时异常以及运行时异常这两种,作为开发人员我们需要了解它们之间的区别,这样才能在遇到异常的时候及时去解决问题!最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。

推荐阅读:

java初级工程师的技能特长怎么写?需要有哪些技能?

JAVA认证在先还是网关在先?JAVA有哪些认证机制?

ajax为什么不能跨域?ajax解决跨域问题方法