java | Exception异常

一.异常介绍

异常:在程序执行过程中发生的不正确情况称为异常。(开放过程中语法错误与逻辑错误不算异常)

分类:

1)Error(错误):Java虚拟机无法解决的严重错误,如JVM系统的内部错误、资源耗尽等。

2)Exception:又分为运行时异常和编译时异常。 

 注意:

1)运行时异常可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响。

2)编译时异常是必须处理的异常。编译异常常发生在文件、网络、数据库中。

二:异常处理

【常用处理方式有两种】

1)try-catch-finally

捕获发生的异常,自行处理

2)throws

将发生的异常抛出,交给调用者来处理,最顶级的处理者就是jvm

【处理机制】

 如果没有显示用try-catch,则默认为throw


 【try-catch】

快速入门:

 public String getName;
   public static void main(String[] args) {
        try {
            Person person = new Person();
            person = null;
            System.out.println(person.getName);//空指针异常
            int n1=10;
            int n2=0;
            int res=n1/n2;//数字运算异常
        } catch (NullPointerException e) {
            System.out.println("空指针异常="+e.getMessage());
        }catch(ArithmeticException e){
            System.out.println("算数异常="+e.getMessage());
        }catch(Exception e){
            System.out.println(e.getMessage());
        }finally {
            System.out.println("无论如何finally语句都会被执行");
        }
    }
}

1)如果发生异常,则异常后的代码不会正常执行,直接进入catch块

2)如果没有发生异常,则不会进入catch块内

3)不管是否发生异常都会执行finally

4)也可以进行try-finally,相当于没有捕获异常,程序会崩掉

【throws】

1)我们在处理异常的时候, 通常希望知道这段代码中究竟会出现哪些可能的异常. 我们可以使用 throws 关键字, 把可能抛出的异常显式的标注在方法定义的位置. 从而提醒调用者要注意捕获这些异常

2)throws后面的类型可以是方法中的异常类型,也可以是它的父类

public static int divide(int x, int y) throws ArithmeticException {
 if (y == 0) {
 throw new ArithmeticException("抛出除 0 异常");
 }
 return x / y;
}

【抛出异常】

1)除了 Java 内置的类会抛出一些异常之外, 程序猿也可以手动抛出某个异常. 使用 throw 关键字完成这个操作.

public static void main(String[] args) {
        System.out.println(divide(10, 0));
    }
    public static int divide(int x, int y) {
        if (y == 0) {
            throw new ArithmeticException("抛出除 0 异常");
        }
        return x / y;
    }

 【throws和throws】

throws:在方法声明处。异常处理的一种方式。后面跟异常类型。

throw:在方法体内。手动生成异常对象的关键字。后面跟异常对象。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值