首页 > 其他 > 详细

异常机制和File类

时间:2021-05-08 00:41:33      阅读:16      评论:0      收藏:0      [点我收藏+]

异常:

1.1 基本概念

  • 异常就是"不正常"的含义,在Java语言中主要指程序执行中发生的不正常情况。
  • java.lang.Throwable类是Java语言中错误(Error)和异常(Exception)的超类。
  • 其中Error类主要用于描述Java虚拟机无法解决的严重错误,通常无法编码解决,如:JVM挂掉了 等。
  • 其中Exception类主要用于描述因编程错误或偶然外在因素导致的轻微错误,通常可以编码解决, 如:0作为除数等。

1.2 异常的分类

  • java.lang.Exception类是所有异常的超类,主要分为以下两种:
  • RuntimeException - 运行时异常,也叫作非检测性异常
  • IOException和其它异常 - 其它异常,也叫作检测性异常,所谓检测性异常就是指在编译阶段都能 被编译器检测出来的异常。

其中RuntimeException类的主要子类:

  • ArithmeticException类 - 算术异常
  • ArrayIndexOutOfBoundsException类 - 数组下标越界异常
  • NullPointerException - 空指针异常
  • ClassCastException - 类型转换异常
  • NumberFormatException - 数字格式异常
  • 注意: 当程序执行过程中发生异常但又没有手动处理时,则由Java虚拟机采用默认方式处理异常,而默认 处理方式就是:打印异常的名称、异常发生的原因、异常发生的位置以及终止程序。

语法格式:

技术分享图片

 

注意事项

  • a.当需要编写多个catch分支时,切记小类型应该放在大类型的前面;
  • b.懒人的写法: catch(Exception e) {}
  • c.finally通常用于进行善后处理,如:关闭已经打开的文件等。

finally里面如果有return ,有拦截其他return的优先权.

 

1.5 异常的抛出

基本概念:

  • 在某些特殊情况下有些异常不能处理或者不便于处理时,就可以将该异常转移给该方法的调用者, 这种方法就叫异常的抛出。
  • 当方法执行时出现异常,则底层生成一个异常类对象抛出,此时异常代 码后续的代码就不再执行。
  • 语法格式 访问权限 返回值类型 方法名称(形参列表) throws 异常类型1,异常类型2,...{ 方法体; } 如: public void show() throws IOException{}

方法重写的原则:

  • a.要求方法名相同、参数列表相同以及返回值类型相同,从jdk1.5开始支持返回子类类型;
  • b.要求方法的访问权限不能变小,可以相同或者变大;
  • c.要求方法不能抛出更大的异常; 注意: 子类重写的方法不能抛出更大的异常、不能抛出平级不一样的异常,但可以抛出一样的异常、更小 的异常以及不抛出异常。

 

       经验分享 若父类中被重写的方法没有抛出异常时,则子类中重写的方法只能进行异常的捕获处理。

                      若一个方法内部又以递进方式分别调用了好几个其它方法,则建议这些方法内可以使用抛出 的方法处理到最后一层进行捕获方式处理。

1.6自定义异常:

实现流程 :

  • a.自定义xxxException异常类继承Exception类或者其子类。
  • b.提供两个版本的构造方法,一个是无参构造方法,另外一个是字符串作为参数的构造方法。

产生异常:  throw new 异常类型(实参);

异常的声明: throws 异常类型 

class IlleaglNUmberException extends Exception {
    public IlleaglNUmberException(String message) {
        super(message);
    }

    public IlleaglNUmberException(Throwable cause) {
        super(cause);
    }
}

public class TestException {
    public static void main(String[] args) {
        try {
            System.out.println(divide(10, 0));
        } catch (IlleaglNUmberException e) {
            e.printStackTrace();
        }
    }

    public static int divide(int m, int n) throws IlleaglNUmberException {
        try {
            return m / n;
        } catch (ArithmeticException e) {
            throw new IlleaglNUmberException(e);
        }

    }

}

 

File 类:

异常机制和File类

原文:https://www.cnblogs.com/wanghzh/p/14742613.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!