JAVA基础-异常机制

基本概念

  • 异常就是"不正常"的含义,在Java语言中主要重程序执行中发生的不正常状况
  • java.lang.Throwable类是Java语言中错误Error异常Exception的超类java

    • Error类主要用于描述Java虚拟机没法解决的严重错误.一般没法编码解决.如JVM挂掉了
    • Exception类主要用于描述因编程错误或偶然外在因素致使的轻微错误,一般能够编码解决.如:0做为除数等

异常的分类

  • java.lang.Exception类是全部异常的超类.主要分为如下两种程序员

    • RuntimeException-运行时异常,也叫做非检测性异常
    • IOException和其它异常-其它异常,也叫做检测性异常.所谓检测性异常就是指在编译阶段都能被编译器检测出来的异常

RuntimeException类的主要子类编程

  • ArithmeticException类 - 算术异常
  • ArrayIndexOutOfBoundsException类 - 数组下标越界异常
  • NullPointerException类 - 空指针异常
  • ClassCastException类 - 类型转换异常
  • NumberFormatException类 - 数字格式异常

异常的避免

  • 尽可能使用if条件判断来避免异常的发生
  • 但过多的if条件判断会致使程序的代码加长,臃肿,可读性差

异常的捕获

语法格式

try{
     编写可能发生异常的代码;
}
catch(异常类型 引用变量名){
     编写针对该类异常的处理代码;
}
...
finally{
     编写不管是否发生异常都要执行的代码;
}

注意事项

  • 当须要编写多个catch分支时,切记小类型应该放在大类型的前面
  • finally一般用于进行善后处理,如:关闭已经打开的文件等

执行流程

try{
    a;
    b; // 可能发生异常的语句
    c;
}catch(Exception e){
    d;
}finally{
    e;
}
  • 若没有发生异常,执行流程是: a, b, c, e
  • 若发生异常,执行流程是: a, b, d, e

异常的抛出

基本概念

在某些特殊状况下, 有些异常不能处理或不便于处理时, 就能够将该异常转移给该方法的调用者, 这种方法就叫异常的抛出.数组

当方法执行时出现异常, 则底层生成一个异常类对象抛出, 此时异常代码后续的代码就再也不执行编码

语法格式

访问权限 返回值类型 方法名称(形参列表) throws 异常类型1, 异常类型2, ... {方法体;}指针

public void show() throws IOException{}

方法重写的原则

  • 要求方法名相同, 参数列表相同, 以及返回值类型相同.从jdk1.5开始支持返回子类类型
  • 要求方法的访问权限不能变小, 能够相同或者变大
  • 要求方法不能抛出更大的异常

注意

子类重写的方法不能抛出更大的异常, 不能抛出平级不同的异常, 但能够抛出同样的异常, 更小的异常, 以及不抛出异常code

经验分享

  • 若父类中被重写的方法没有抛出异常时,则子类中重写的方法只能进行异常的捕获处理
  • 若一个方法内部又以递进方式分别调用了好几个其它方法,则建议这些方法内可使用抛出的方法处理到最后一层进行捕获方式处理

自定义异常

基本概念

当须要在程序中表达年龄不合理的状况时, 而Java官方又没有提供这种针对性的异常, 此时就须要程序员自定义异常加以描述orm

实现流程

  1. 自定义xxxException异常类, 继承Exception类或者子类
  2. 提供两个版本的构造方法: 一个是无参构造方法, 另一个是字符串做为参数的构造方法

异常的产生

throw new 异常类型(实参)
在须要抛出异常的加入上述语句便可.对象

throw new AgeException("年龄不合理");继承

相关文章
相关标签/搜索