科技怪人|预定义异常类不够用?那就来自定义一个异常类吧 自定义异常类
自定义异常
Java 提供相当多的异常类 , 尽量使用它们而不要创建自己的异常类
如果遇到一个不能用预定义异常类恰当描述的问题 , 那就可以通过派生 Exception类或其子类 , 例如 , IOException类 , 来创建自己的异常类 。
可以先从JDK中自带的异常类来学习如何创建自己的异常类:
本文插图
该类从RuntimeException类来继承 , 因此该异常属于unchecked exception , 可以不使用try-catch结构来处理 。
其次 , 包含了一个长整型的成员变量serialVersionUID , 该变量主要在Java的序列化中使用 , 序列化机制通过判断类的serialVersionUID值来验证实体类的版本一致性 , 该值一般自动生成
第三 , 该类定义了两个构造方法 , 其中一个是无参数的默认构造方法 , 另外一个则是带有一个String类型参数的构造方法 , 参数用于存储具体的异常消息 。 通过throw来抛出异常时一般新建一个指定消息值的异常类对象 。
实际上 , 不仅NullPointerException类的定义是这样的 , 绝大多数异常类的定义都是这么简单
在学习了JDK中异常类的源代码之后 , 我们接下来看看如何自定义异常类
如 , 我们已经有一个电动汽车类 , 我们需要有处理有关电力 不足的意外情况 ,
则可以设置一个异常类:OutOfEletricityException 自定义异常类
本文插图
该异常类的定义也非常简单 。 该类包含了一个静态的长整型常量 , 以及两个构造方法 。
OutOfEletricityException异常类属于checked exception , 因此 , 如果在方法中未使用throws进行声明的话 , 就必须使用try-catch结构进行处理 。
总结:
异常处理通常需要更多的时间和资源
异常出现在方法中 。 如果想让该方法的调用者处理异常 , 应该创建一个异常对象并将其抛出 。 如果能在发生异常的方法中处理异常 , 那么就不需要抛出或使用异常 。
一般来说 , 一个项目中多个类都会发生的共同异常应该考虑作为一种异常类 。 对于发生在个别方法中的简单错误最好进行局部处理 , 无须抛出异常 。
在代码中 , 应该什么时候使用 try-catch 块呢?
当必须处理不可预料的错误状况时应该使用它 。
一般不要用 try-catch 块处理简单的、可预料的情况 。
如:
NullPointerException 是Java编程中出现次数非常高的异常 , 如果不是高居榜首的话 , 那至少也是名列前茅 。
在对一个没有完成构建的对象(例如null值)调用方法或访问成员变量 , 就会抛出NullPointerException类型的异常 。
该异常属于unchecked exception , 因此不是必须使用try-catch结构进行处理 。
本文插图
try-catch结构来处理NullPointerException
实际上 , 在编程中更倾向于使用简单的if来进行判断 , 而不是使用try-catch结构来处理空
针异常:
本文插图
哪些情况是异常的 , 哪些情况是可预料的 , 有时很难判断 。
【科技怪人|预定义异常类不够用?那就来自定义一个异常类吧 自定义异常类】但有一点要把握住 , 不要把异常处理用作简单的逻辑测试 。 这种逻辑测试采用最简单的if结构即可完成 , 不需要使用复杂的异常处理来完成 。
推荐阅读
- 2020|影谱科技入选“2020中国AI商业落地价值潜力100强榜单”
- 行业互联网|眼控科技聚焦航空气象报文,人工智能助推编发自动化
- 行业互联网|金风科技中标哈萨克斯坦札纳塔斯二期100MW风电项目
- 智能穿戴|重新定义性价降噪 小米有品上线ANC蓝牙耳机,静享生活
- 无人科技,电池技术|盘点几种常见的无人机电池
- 行业互联网,智慧医疗|商汤科技创“心”升级,探索“联邦学习”入选ECCV
- 行业互联网|创盈Charmwin惊艳亮相2020上海美博会,打造“光”科技健康护肤新风尚
- 科技圈|集成灶两大品牌厨壹堂教你解锁三伏天厨房的正确打开方式
- 黑科技|花两万块钱买一台大法电视是一种怎么样的体验?
- 北京|北京嘀嘀无限科技发展有限公司因涉嫌非法聘用外国人被行政处罚