java中的异常

    当程序执行过程中有时会出现了不正常的情况,这种不正常的情况叫做异常。Java提供了异常的处理方式,Java把异常信息打印输出到控制台,供程序员参考,程序员看到异常信息后,可以对异常信息进行修改,让程序变得更加健壮。

1、异常信息是JVM打印的。

2、 Java语言中异常是以什么形式存在的呢?

    * 异常在Java中是以类的形式存在的,每一个异常类都可以创建异常对象。

    * 类是模板,对象是实际存在的个体。

          举个简单的例子:

                    书包丢了(异常类)

                    昨天,小红的书包丢了(异常对象)

                    今天,小明的书包丢了(异常对象)

                    明天, 小花的书包丢了(异常对象)

3、以下代码进行简单的了解:

public class Test3 {
    public static void main(String[] args) {

        int a = 10;
        int b = 0;
        //JVM执行到此处的时候,会new异常对象:ArithmeticException: / by zero
        //并且JVM将new的异常对象抛出,打印输出信息到控制台了
        int c = a / b;//出现异常

        //这句无法执行,以为JVM终止了程序的执行
        System.out.println("Hello World");
    }
}

4、异常在Java中以类和对象的形式存在,那么异常的继承结构是怎样的?
      Object 

      Object 下有 Throwable

     Throwable 下有两个分支:Error (不可处理,直接退出)和 Exception (可处理的)

     Exception 下有两个分支:

                Exception 的直接子类:编译时异常(要求程序员在编写程序阶段必须对这些异常进行预处理)

                                                      RuntimeException (运行时异常)

     注:异常都是在运行阶段发生的,因为只有程序运行阶段才可以new对象,异常的发生就是new异常对象。

5、编译时异常和运行时异常的区别?

    *   编译时异常一般发生的概率比较高。举个例子,出门前发现下雨,不打伞的话会发生生病异常,但是如果出门拿伞(即在异常发生之前进行预处理),就可以避免异常的发生。因此编译时异常需要进行预处理

    *   运行时异常一般发生的概率比较低。比如出门被飞机砸到,也会出现异常,但这种异常概率很低,不需要进行预处理。

6、运行时异常还有其他名字:

        非受检异常   非受控异常

7、Java中对异常的处理方式有两种:

    *   在方法声明的位置上,使用throws关键字。(抛给上一级,谁调用我,我就抛给谁)

    *   使用try......catch语句进行异常的捕捉.(这件事发生了谁也不知道,因为被我捕捉了)

       注:Java中异常发生之后如果一直上抛,最终抛给了main方法,main方法继续上抛,抛给了调用者JVM,JVM知道这个异常发生,只有一个结果,就是终止JVM的执行.

 通过以下代码进行进一步的了解:

    第一种处理方法:

public class Test5 {
    //第一种处理方法:在方法声明的位置上继续使用 throws ,来完成异常的继续上抛,抛给调用者
    //上抛类似于推卸责任,继续把异常传给调用者
    public static void main(String[] args) throws ClassNotFoundException {
        doSome();
    }

    public static void doSome() throws ClassNotFoundException{
        System.out.println("doSome");
    }
}

    第二种处理方法:

public class Test6 {
    //第二种处理方法:try...catch 行捕捉
    //捕捉相当于把异常拦下来,意味着真正解决了异常
    public static void main(String[] args){
        try {
            doSome();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static void doSome() throws ClassNotFoundException{
        System.out.println("doSome!!!");
    }
}

       注:一般不建议用throws,因为这个异常如果真正的发生了,一定会抛给JVM,JVM只有终止程序,一般main方法中的异常建议使用try......catch语句进行异常的捕捉,main就不要继续上抛了.

8、只要异常没有捕捉,采用上报的方式,此方法的后续代码不会执行.

      try语句块中的某一行出现异常,该行后面的代码不会执行,try......catch捕捉异常之后,后续代码可以执行.

9、try......catch的深入:

    *   catch后面的小括号中的类型可以是具体的异常类型,也可以是该类型的父类型。

    *   catch可以写多个,建议catch的时候,精确到一个一个处理,这样有利于程序的调试。

    *   catch写多个的时候,从上到下,必须遵守从小到大。

               

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java异常机制是一种用于处理程序执行期间可能出现的错误情况的机制。Java异常分为两类:受检异常Checked Exception)和非受检异常(Unchecked Exception)。其,受检异常必须在代码进行捕获和处理,否则编译器将报错。而非受检异常则不需要在代码进行捕获和处理,但是如果不进行处理,导致程序的异常终止。 Java异常机制通过抛出异常对象来表示程序出现的异常情况,通常情况下,异常对象包含了异常的类型、异常的消息以及异常发生的位置等信息。当程序执行过程出现异常情况时,就抛出相应的异常对象,这个异常对象被传递给调用栈上的上层方法,直到被捕获或者到达程序的顶层方法。 Java异常机制主要由三个关键字来实现:try、catch和finally。try块包含可能抛出异常的代码,catch块用于捕获并处理异常,finally块则用于执行一些必须要完成的代码,无论是否抛出异常执行。 下面是一个简单的Java异常处理的例子: ``` public class ExceptionDemo { public static void main(String[] args) { try { int num = Integer.parseInt(args[0]); System.out.println("10 / " + num + " = " + (10 / num)); } catch (ArithmeticException e) { System.out.println("除数不能为0"); } catch (NumberFormatException e) { System.out.println("请输入数字"); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("请至少输入一个参数"); } finally { System.out.println("程序执行完毕"); } } } ``` 在这个例子,我们使用了try-catch-finally关键字来处理用户输入的参数,当输入参数不满足条件时,就抛出相应的异常catch块用于捕获并处理异常,finally块则用于执行一些必须要完成的代码,无论是否抛出异常执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薰衣草2333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值