异常的简单使用

1.什么是异常

异常是指程序在运行过程中发生的,由于外部问题导致的程序运行异常事件,异常的发生往往会中断程序的运行。在 Java 这种面向对象的编程语言中,万物都是对象,异常本身也是一个对象,程序发生异常就会产生一个异常对象。

2.异常分类

系统级别无法规避的异常(Error)

程序员可以捕获解决的异常(Exception)

二者都是 Java异常终极bossThrowable异常处理的重要子类,各自都包含大量子类。

3.异常执行顺序

try:

  • try块中放可能发生异常的代码。
  • 如果执行完try且不发生异常,则接着去执行finally块中的代码和finally后面的代码(如果有的话)。
  • 如果程序发生异常,则尝试去匹配对应的catch块。

catch:

  • 每一个catch块用于捕获并处理一个特定的异常,或者这异常类型的子类。Java7中可以将多个异常声明在一个catch中。
  • catch后面的括号定义了异常类型和异常参数。如果异常与之匹配且是最先匹配到的,则虚拟机将使用这个catch块来处理异常。
  • 在catch块中可以使用这个块的异常参数来获取异常的相关信息。异常参数是这个catch块中的局部变量,其它块不能访问。
  • 如果当前try块中发生的异常在后续的所有catch中都没捕获到,则先去执行finally,然后到这个方法的外部调用者中去匹配异常处理器。
  • 如果try中没有发生异常,则所有的catch块将被忽略。

finally:

  • finally块不是必须的,通常是可选的。
  • 无论异常是否发生,异常是否匹配被处理,finally中的代码都会执行。
  • 一个try至少要有一个catch块,否则, 至少要有1个finally块。但是finally不是用来处理异常的,finally不会捕获和处理异常,处理异常的只能是catch块。
  • finally主要做一些清理工作,如流的关闭,数据库连接的关闭等。
  • finally块不管异常是否发生,只要对应的try执行了,则它一定也执行。只有一种方法让finally块不执行:「System.exit()」 。

4.代码展示

1.简单的异常架构

public class Text {
    public static void main(String[] args) {
        int a = 6;
        int b = 0;

        try {                               //捕获异常,里面写可能会出现异常的地方
            System.out.println(a / b);
        } catch (Exception e) {                  //解决异常,执行自己写的解决异常的方法
            System.out.println("被除数不能为: 0");
        } finally {                            //不管能不能捕获到异常还是没有异常,这里都会执行
            System.out.println("程序终止");
        }
    }
}

2.catch可以写多个,根据实际情况来定,重点(catch的参数级别从低到高),最大的放在最后一个catch里不然会报错。

5.throws/throw 关键字

「throws 关键字」

如果一个方法内部的代码会抛出检查性异常(checked exception),而方法自己又没有对这些异常完全处理掉,则java的编译器会要求你必须在方法的签名上使用 「throws」 关键字声明这些可能抛出的异常,否则编译不通过。

throws 是另一种处理异常的方式,它不同于try…catch…finally…,throws 关键字仅仅是将方法中可能出现的异常向调用者抛出,而自己则不具体处理。

采取这种异常处理的原因可能是:方法本身不知道如何处理这样的异常,或者说让调用者处理更好,调用者需要为可能发生的异常负责。

「throw 关键字」

我们也可以通过 throw 语句手动显式的抛出一个异常,throw语句的后面必须是一个异常对象。语法如下:

 throw exceptionObject
 

6.快速使用

 

1.选中可能会出现异常的代码按住Ctrl+alt+T  (自己选一个就OK)

2.直接在方法上抛出异常    throws

  public void coco() throws Exception{
        System.out.println("加油");
    }

3.在代码中   throw

public void save(User user) {
    if (user == null)
        throw new IllegalArgumentException("User对象为空");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值