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);
}
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【Spring注解驱动开发】聊聊Spring注解驱动开发那些事儿!
【Spring注解驱动开发】聊聊Spring注解驱动开发那些事儿! 写在前面今天,面了一个工作5年的小伙伴,面试结果不理想啊!也不是我说,工作5年了,问多线程的知识:就只知道继承Thread类和实现Runnable接口!问Java集合,竟然说HashMap是线程安全的!问MySQL的MyISAM存储引擎和InnoDB存储引擎的区别,竟然说成是MyISAM存储引擎支持事务,InnoDB不支持!问Spring就只知道IOC和AOP的概念,深一点就不知道了!再问项目。。。哎,算了,不说了! 大家对于设计模式、高并发和Java8新特性,不了解的,就去看我的专栏吧!今天,我们来聊聊关于Spring注解驱动开发的那些事儿,也算是Spring专栏的开篇吧! 关于Spring说起Spring,绝对是Java开发领域的佼佼者,试问,做Java开发的有谁不知道Spring?做Java开发的又有谁没用过Spring?又有哪家公司在Java Web项目中没使用过Spring?就算有,那也应该很少吧!所以,骚年,如果你选择了Java开发这条不归路,你就必须牢牢掌握Spring! Spring注解驱动如果小伙伴们...
- 下一篇
消息推送SDK如何保证稳定性和安全性?看看个推资深专家怎么说
一个好的消息推送SDK应该具备稳定、易用、安全、小巧灵活等特点。个推作为国内第三方推送市场的早期进入者,一直致力于为开发者提供高效稳定的推送SDK。经过多年的打磨和创新,个推沉淀了丰厚的技术经验。这期文章将从“小”、“稳”、“好用”以及“安全”四个角度分享个推推送SDK的技术经验。 1 小 1.1 65535限制 好的消息推送SDK首要需考虑到包体的小巧灵活性。为什么选择更小体积的包体?从代码层面来看,是由于系统的“65535限制”。如上图(左)所示,我们的程序最终会生成dex文件,dex文件主要由以下几部分组成:header(标头)、一连串的ids(标识符列表)、data(数据区)以及link_data(静态链接文件中使用的数据)。细看上图(右),它包含了一个method_ids_size字段,该字段的主要作用是定义个数。根据谷歌的定义,uint是一个16位的short类型,最长长度是65535。如果将dex工程反编译,会生成很多smali的文件,再去看smali里的函数调用(比如invoke direct {***} 函数名@BBB),会发现调用的地址其实就是刚才unit里定义的偏...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- CentOS关闭SELinux安全模块
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度