Java 异常(二) 自定义异常-阿里云开发者社区

开发者社区> 幸运券发放> 正文

Java 异常(二) 自定义异常

简介:
+关注继续查看

Java 异常(二) 自定义异常

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

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

二、自定义异常的分类
1、检查性异常类:自定义异常类继承于Exception。
2、运行时异常类:自定义异常类继承于RuntimeException
三、Objects的非空判断
Objects由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或 null-tolerant(容忍空指针的),那么在它的源码中,对对象为null的值进行了抛出异常操作。Objects通过调用requireNonNull(T obj)方法查看调用对象是否为null。

public static 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);

}

原文地址https://www.cnblogs.com/lingq/p/12943295.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring Boot Admin,贼好使!(8)
Spring Boot Admin,贼好使!(8)
22 0
Spring Boot Admin,贼好使!(7)
Spring Boot Admin,贼好使!(7)
23 0
更快的Maven构建工具mvnd和Gradle哪个性能更好?(5)
更快的Maven构建工具mvnd和Gradle哪个性能更好?(5)
22 0
Spring Boot Admin,贼好使!(5)
Spring Boot Admin,贼好使!(5)
33 0
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(6)
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(6)
25 0
更快的Maven构建工具mvnd和Gradle哪个性能更好?(4)
更快的Maven构建工具mvnd和Gradle哪个性能更好?(4)
19 0
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(7)
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(7)
22 0
更快的Maven构建工具mvnd和Gradle哪个性能更好?(3)
更快的Maven构建工具mvnd和Gradle哪个性能更好?(3)
30 0
Spring Boot Admin,贼好使!(3)
Spring Boot Admin,贼好使!(3)
26 0
Spring Boot Admin,贼好使!(4)
Spring Boot Admin,贼好使!(4)
27 0
+关注
幸运券发放
阿里云代金码bieryun.com
369
文章
3
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载