博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对于可恢复情况使用受检异常,对于编程错误使用运行时异常(58)
阅读量:5947 次
发布时间:2019-06-19

本文共 586 字,大约阅读时间需要 1 分钟。

hot3.png

java 程序设计语言可抛出三种结构(throwable):

  • 受检异常
  • 运行时异常
  • 错误

虽然什么时候抛出什么,不总是那么的清晰,但是依然存在一些指导性原则

  • 如果可以适当的恢复,请使用受检异常(强迫调用者处理该异常或者抛出去)
  • API 设计者让api 用户面对受检异常,强迫处理受检异常

未受检的抛出结构包括(运行时异常、错误)

  • 二者都是不需要也不应该被捕获的可抛出结构
  • 如果抛出为受检异常,往往就属于不可恢复的情形,继续执行下去有害无益

使用运行时异常表明变成错误

  • 大多数运行时异常都是前提违例导致的
    • 前提违例:调用者未遵守api的调用规范

虽然 java 语言规范没要求,但是错误往往被jvm保留用来表示资源不足、约束失败、或其他是程序无法执行下去的条件

  • 约定俗成,最好不要再去创建Error 的子类
  • 所有未受检抛出结构都应该是RuntimeException 的子类
  • 可以定义一个新的抛出结构(不属于上述三者),这样做没有任何益处,而且困扰api使用者

总之:

  • 可恢复异常,使用受检异常
  • 程序错误,使用运行时异常
    • 如果不清楚是否可恢复,最好使用未受检异常
  • 受检异常往往指明了恢复条件,提供辅助方法就很重要(比如电话呼叫失败,捕获异常可以查询欠费金额并且返回给用户看)

转载于:https://my.oschina.net/u/3847203/blog/2236755

你可能感兴趣的文章
自带科技基因,打造纯原创IP,“燃烧小宇宙”获数千万A轮融资
查看>>
未能加载文件或程序集"Newtonsoft.Json, Version=4.5.0.0
查看>>
C#多线程编程系列(二)- 线程基础
查看>>
Jenkins 内置变量(学习笔记二十四)
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 13 章 并发控制_13.2. 事务隔离
查看>>
虚拟机概念
查看>>
【云周刊】第195期:全球首家!阿里云获GNTC2018 网络创新大奖 成唯一获奖云服务商...
查看>>
【VS】使用vs2017自带的诊断工具(Diagnostic Tools)诊断程序的内存问题
查看>>
AutoScaling 支持从实例启动模板创建实例
查看>>
Mysql 查看视图、存储过程、函数、触发器
查看>>
Java提高篇(二):IO字节流、字符流和处理流
查看>>
云HBase集群的规划
查看>>
hello dato--graphlab create
查看>>
一个优质男朋友的标准
查看>>
浩鲸科技和京东加入 OpenMessaging 开源标准社区
查看>>
spring 注入方式
查看>>
FileZilla Client 3.42.0 beta1 发布,流行的 FTP 解决方案
查看>>
深度学习之迁移学习介绍与使用
查看>>
Qt学习笔记(一)-文件目录与术语解释
查看>>
IDEA 自动导入包
查看>>