• Java 异常(二) 自定义异常


     Java 异常(二) 自定义异常

    在开发中,为了适应业务的开发需求, 在 Java 中可以根据业务的异常情况自定义异常。

    一、自定义异常

    所有的自定义异常都必须是 Throwable 的子类,在自定义继承时可以继承于 Exception 或者它的子类。

    二、自定义异常的分类

    1、检查性异常类:自定义异常类继承于Exception。

    2、运行时异常类:自定义异常类继承于RuntimeException

    三、Objects的非空判断

    Objects由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或 null-tolerant(容忍空指针的),那么在它的源码中,对对象为null的值进行了抛出异常操作。Objects通过调用requireNonNull(T obj)方法查看调用对象是否为null。

    public static <T> T requireNonNull(T obj) {
      if (obj == null)     throw new NullPointerException();   return obj; }

    从上面源码可以看出,如果传递对象为 null,requireNonNull 方法会抛出 NullPointerException 异常,否则返回该对象。

    四、实例

    1、自定义检查性异常类(MyException)

    public class MyException extends Exception {
        
        public MyException() { } // 无参构造
        
        public MyException(String msg) { 
            super(msg); // msg : 异常提示信息
        }
        
        public MyException(Throwable throwable) { 
            super(throwable);// throwable 类型
        }
    }

    2、自定义运行时异常类(MyRuntimeException)

    public class MyRuntimeException extends RuntimeException {
        public MyRuntimeException() { } // 无参构造
        
        public MyRuntimeException(String msg) { 
            super(msg); // msg : 异常提示信息
        }
        
        public MyRuntimeException(Throwable throwable) { 
            super(throwable);// throwable 类型
        }
    }

    3、自定义异常的使用实例

    public class ExceptionDemo {
        public static void main(String[] args) throws Exception {
            int i = demo(3);
            System.out.println("i = " + i);
        }
        
        public static int demo(int index) throws  MyException{
            int[] arr = {1,2,3};
            if(index >= arr.length || index < 0)
                throw new MyRuntimeException("您传递的索引错误,数组索引在0-2之间");
            return arr[index];
        }
    }

     4、Objects的非空判断实例

    public static void main(String[] args) throws Exception {
        Integer i = 10;
        Integer i2 = Objects.requireNonNull(i);
        System.out.println(i2);
    }
  • 相关阅读:
    土木工程材料0732
    07 具有无关项的逻辑函数及其化简
    06 逻辑函数化简法
    AD中板子挖孔开槽
    电容式触摸按键原理
    LTspice
    三相电
    7、简单电阻容元件模型的创建
    cadence17.4在笔记本下设置菜单显示不全的解决办法
    36. 二叉搜索树与双向链表
  • 原文地址:https://www.cnblogs.com/lingq/p/12943295.html
Copyright © 2020-2023  润新知