1.什么是exceptions:
契约精神:简单说api调用者传入约定范围内的参数,api返回约定相应的数值或做相应的操作
两个约定:分别可以称之为前置条件与后置条件

e.g:

      String str = "12345"try {str.charAt(-1);str.charAt(2);} catch (Exception e){e.printTrack() }

上例中,约定范围内的参数应该是0,1,2,3,4(str.lenth() - 1)
传入参数为-1时,不在约定范围内,违反了前置条件
str.charAt(2),如果不能正常返回str中得数值时,则是违反了后置条件

exceptions:api调用者或api没有遵守前后置条件导致存在可预见的异常状态

2.exceptions的类型
Error:客户端无法处理的exceptions 例如 oom ,只能交给jvm处理

checked exceptions:如果希望api调用者有意识地采取措施,那么抛出checked exceptions
eg: 当上传文件失败时,throw NoNetWorkExceptions时,api调用者,可以将文件存储在本地,采用另一种策略

unchecked exceptions:如果希望api调用者不必要采取补救措施,那么抛出 unchecked exceptions
eg:str.charAt(-1) StringIndexOutOfBoundsException

自定义异常类的作用,关键在于可以嵌入更多地信息

3.异常设计原则

  • 如果方法遭遇了一个无法处理的意外情况,那么抛出一个异常
  • 如果你认为客户端程序需要有意识地采取措施,那么抛出检查型异常
  • fail fast 尽早抛出异常
  • catch之后,不要什么都不做

参考:http://www.cnblogs.com/JavaVillage/articles/384483.html
http://www.cnblogs.com/octobershiner/archive/2012/12/20/2827120.html
http://niehan.blog.techweb.com.cn/archives/259.html

转载于:https://www.cnblogs.com/jsaint/articles/3374742.html

Exceptions(小节)相关推荐

  1. mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

    mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...

  2. openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old

    具体错误如下: openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old .xls file ...

  3. requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine('',))

    这几天python脚本中使用requests模块发现如下错误: File "/usr/local/python2710/lib/python2.7/site-packages/request ...

  4. 对ARM异常(Exceptions)的理解

    对ARM异常(Exceptions)的理解 1 .对 ARM 异常( Exceptions )的理解 所有的系统引导程序前面中会有一段类似的代码,如下: .globl _start           ...

  5. Django3.0 +Python3 连接mysql遇到django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer

    使用idea 创建了一个Django项目,不想使用默认的数据库进行操作,想切换成mysql数据,在此遇到了一些问题特此记录. 按照网上所说使用pymysql进行数据库连接操作,安装并且配置完毕后,在执 ...

  6. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 数据库报错

    -- 查询mysql 数据库链接空闲时间持有最大空闲时间,单位为秒 SHOW VARIABLES WHERE VAriable_name = 'interactive_timeout'; -- 会出现 ...

  7. python基于Django框架编译报错“django.core.exceptions.ImproperlyConfigured”的解决办法?...

    下面是我具体遇到的问题和解决方法: 错误详细信息: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_IND ...

  8. PhpStorm升级后调用某些类提示phpstorm Unhandled exceptions

    首先打开phpstorm后找到Setting/Editor/Inspections/PHP/PHPDOC和Error Handling 如下图: 去掉Unhandled exceptions勾选和Mi ...

  9. Python安装库较慢问题,Python报错pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool解决方法

    本文参考:https://blog.csdn.net/sinat_26811377/article/details/99698807 出现问题 在安装第三方库的时候,Python报错pip._vend ...

最新文章

  1. 干货 | 上手机器学习,从搞懂这十大经典算法开始
  2. Springboot中使用jpa
  3. swap交换空间(当内存不足时)
  4. 【整理】ABAP开发中的屏幕跳转
  5. AngularJS操作DOM——angular.element
  6. android 清屏函数,浅谈android截屏问题
  7. 【转载】MySQL -- SET NAMES utf8
  8. jpa 人大金仓数据库方言_生态丨参展CITE2020 人大金仓全栈数据库管理系统强势来袭!...
  9. bzoj 2656: [Zjoi2012]数列(sequence)(简单高精度模板2.0)
  10. 嵌入式系统开发快速体验
  11. dh-make指定包含低线_的构建目录
  12. 实体类转换为XML字符串
  13. 舒尔特 Pro ,专业训练注意力专注力
  14. ArcGIS网络分析之数据组织、连通性设置
  15. 飞天5K实战经验:大规模分布式系统运维实践
  16. 泰拉瑞亚无限物品服务器,泰拉瑞亚1.4.0.5.2.1无限道具版
  17. 纯CSS制作3D动态相册【流星雨3D旋转相册】HTML+CSS+JavaScriptHTML5七夕情人节表白网页制作
  18. 光遇为什么显示服务器连接错误,光遇服务器错误怎么办 光遇服务器错误问题解决办法-游侠手游...
  19. 如何去除任务栏右下角的红色盾牌图表
  20. 70块钱打造简单家庭NAS

热门文章

  1. JS中[感叹号]function(){}()的理解
  2. HTTP协议中的Content-Encoding
  3. 《剑指offer》丑数
  4. Java获取泛型T的类型 T.class
  5. python使用mysql
  6. 2018-2019-1 20165201 实验五 通讯协议设计
  7. 腾讯云发布专有云TCE矩阵,让企业用上金融级合规专有云
  8. WCF中的Dispose
  9. 竞价账户烧钱的七大病因和处理办法
  10. ByteBuffer源码分析