java学习——异常

1.异常体系介绍

1.1java.lang.Throwable分类

  • Error:代表系统级别错误(不用管)

  • Exception

    • RuntimeException:运行时异常(编译阶段不会出现异常提醒),RuntimeException本身和子类

      • NullPointerException

      • ArithmeticException

      • ArrayIndexOutOfBoundsException

    • 编译时异常(编译阶段就会出现异常提醒),直接继承Exception

1.2异常在代码中的两个作用

  • 异常是用来查询bug的关键参考信息

  • 异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况

1.3异常的处理方式

1.3.1JVM虚拟机默认处理方式
  • 把异常的名称,异常的原因及异常出现的位置等信息输出在了控制台

  • 程序停止执行,下面的代码不会再执行了

1.3.2自己处理
  • 格式

  • try{
        可能出现异常的代码    
    }catch(异常类名 变量名){
        异常的处理代码;
    }
  • 目的/好处:当代码出现问题时,可以让程序继续往下执行

  • 问题:

    • 如果try中没有遇到问题,怎么执行?

      会把try里的所有代码全部执行完毕,不会执行catch里面的代码

    • 如果try中可能遇到多个问题,怎么执行?

      写多个catch与之对应

      细节:如果我们要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面

      了解:在JDK7之后,我们可以在catch中同时捕获多个异常,中间用 | 进行隔开

      表示如果出现了A异常或者B异常的话,采取同一种处理方案

    • 如果try中遇到的问题没有被捕获,怎么执行?

      相当于try...catch的代码白写了,最终交给虚拟机进行处理

    • 如果try中遇到了问题,那么try下面的其他代码还会执行吗?

      下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体

      但是如果没有对应catch与之匹配,那么还是会交给虚拟机进行处理

1.3.3(交给调用者)抛出异常
  • throws

    • 写在方法定义处,表示声明一个异常,告诉调用者,使用本方法可能会有哪些异常

    • 编译时异常:必须要写

    • 运行时异常:可以不写

    • public void 方法() throws 异常类名1,异常类名2...{ ...... }

  • throw

    • 写在方法内,结束方法,手动抛出异常对象,交给调用者,方法中下面的代码不再执行了

    • public void 方法() { throw new NullPointerException() };

  • 区别

    (1)throws用于方法头,表示的只是异常的申明,而throw用于方法内部,抛出的是异常对象。

    (2)throws可以一次性抛出多个异常,而throw只能一个 (3)throws抛出异常时,它的上级(调用者)也要申明抛出异常或者捕获,不然编译报错。而throw的话,可以不申明或不捕获(这是非常不负责任的方式)但编译器不会报错。

1.4异常中的常见方法

public String getMessage() 返回throwable异常的详细消息字符串 public String toString() 返回此可抛出的简短描述 public void printStackTrace() 把异常的错误信息输出在控制台

细节:把异常的错误信息以红色字体输出在控制台(仅仅是打印信息,不会停止程序运行)

了解:System.err.println

1.5自定义异常

1.5.1书写步骤:

1、定义异常类:见名知意

2、写继承关系

运行时:RuntimeException 核心:表示参数错误而导致的问题 ​ 编译时异常:Exception 核心:提醒程序员检查本地信息

3、空参构造

4、带参构造

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值