异常(Exception)

异常

来自搞事的枣儿

    异常是一种对象,运行时出现的错误会作为异常抛出。

异常类型

异常的跟类是java.lang.Throwable

异常

异常主要有三种类型:

  1. 系统错误

    • 由Java虚拟机抛出,用Error类表示
    • Error 类描述的是内部系统错误。这种错误很少发生,如果发生,除了通知用户以及尽量稳妥终止程序外,几乎什么都不能做
      这里写图片描述
  2. 异常

    • 用Exception类表示
    • 描述由于程序和外部环境所引起的错误,这些错误能被程序与捕获和处理
      这里写图片描述
  3. 运行时异常

    • 用RuntimeException类表示
    • 描述程序的设计错误,例如类型装换,访问一个越界数组或数值错误。运行时异常通常由虚拟机抛出
      这里写图片描述

Attenction:

  • RuntimeException、Error以及他们的子类都成为免检异常,所有的其他异常都成为必检异常,意思是指编译器会强制程序员检查并通过try-catch块处理他们,或者在方法头声明
  • 大多是情况下,免检异常都会反映出程序设计上不可恢复的逻辑错误

异常处理

Java的异常处理有三种操作:

  1. 声明一个异常

    • 不显示声明Error和RuntimeException
    • 在方法头显示声明所有可能发生的异常
    • 关键字:throws
      public void function()throws Exception
    • 多个异常可以用,分隔开
    • public void function()throws Exception1,Exception2,...,ExceptionN
  2. 抛出一个异常
    自己创建一个异常类的对象,并抛出这个对象(两种方式)

    • Exception ex=new IllegalArgumentException("Wrong Argument");
      throw ex;
    • throw new IllegalArgumentException("Wrong Argument")
  3. 捕获一个异常

    • 即当抛出异常时,try-catch块来捕获异常,并处理它,如果未捕获这跳过catch子句;当try块某语句出现异常,解析下来的语句将跳过,直接查找处理该异常的代码
    • 处理异常的代码成为异常处理器

Attenction:

  • 如果在父类中没有声明异常,那么就不能再子类中对其进行继承来声明异常
  • 异常类至少有两个构造方法:一个是无参构造方法,一个是带可描述这个异常的String参数的构造方法。该参数成为异常消息
  • catch块能捕获一个父类的异常对象,就能捕获该父类的所有子类的异常对象
  • 父类的catch块不能出现在子类的catch块前,否则会出现编译错误
  • 必须处理必检异常(即Error或Runtime Exception之外的异常),如果方法声明了异常,就一定要捕获或者抛出该异常
  • JDK7的新特性:catch多个异常可以用|分隔开
    catch(Exception1|Exception2|...|ExceptionN ex)

还有一些需要知道的

  • finally子句。无论异常是否产生,finally子句中内容总会执行
  • 从新抛出异常。如果不能处理某个异常,或只是简单的希望使用中注意到该异常,可以从新抛出异常
try{
         statement;
     }
     catch(Exception ex){
         //doSomething
         throw ex;
     }
  • 通过派生java.lang.Exception类来自定义异常类

References: 《Java语言程序设计》 梁勇 著

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值