漫画:全面理解java.lang.IllegalArgumentException及其可用性设计
经过一段时间的学习与实践,飞鸟已经可以独力解决一些问题。小鱼就让飞鸟讲述一些遇到的问题和解决过程。
报错日志:
这个产生的原因是我覆盖Collections.sort的Comparator方法的时候
Collections.sort在jdk1.7版本之后底层用的是TimSort,这个Sort类会有很严格的检验,检验其自反性、传递性、对称性。而上面的代码忽视了相等的情况,不满足对称性。
所以解决方法就是:
IllegalArgumentException是非法参数异常,报这个异常说明传入的参数违反了一个方法要求的某些特性。比如咱们刚才看的问题里这个Comparator类作为sort方法的参数就违反了TimSort要求的对称性。
再举个例子:
这段代码会报错:
从源码来看:
如果参数里出现了指定的patternChars之外的字符就会报错。
发生IllegalArgumentException基本可以认定为程序Bug。Bug是避免的,应该在测试时发现。所以最重要的措施是完善测试用例,全分支覆盖,做好积累沉淀。
如果真的在运行时发生此情况,那就要做好及时的监控报警,现场快照保存,尽量第一时间发现并解决。
对内部异常咱们可以这么处理。那外部异常呢?比如使用的一个中间件,中间件有可能会版本升级出现不符合预期的情况。
对于这种外部依赖,当发生问题的时候最好是不影响现有程序。方法比如启动时加载,如果发生问题,程序根本启动不起来。因为线上一般都不会只部署一台机器,一台机器发生问题启动不起来一般不会影响线上服务。这时候只要快速修复问题即可。
如果必须运行时调用那就要尽量弱化依赖和控制依赖。具体可参考静儿在美团技术博客的文章《美团点评智能支付核心交易系统的可用性实践》。
静儿的画画水平有点差 /(ㄒoㄒ)/~~
关注静儿公众号,不定期漫画技术推送~
本期文章:
原文链接地址是:
漫画:全面理解java.lang.IllegalArgumentException及其可用性设计
漫画:全面理解java.lang.IllegalArgumentException及其可用性设计的更多相关文章
- java.lang.IllegalArgumentException: Wrong state classs
java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class cn.et ...
- MyBatis与Spring MVC结合时,使用DAO注入出现:Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
错误源自使用了这个例子:http://www.yihaomen.com/article/java/336.htm,如果运行时会出现如下错误: Invocation of init method fai ...
- hadoop程序问题:java.lang.IllegalArgumentException: Wrong FS: hdfs:/ expected file:///
Java代码如下: FileSystem fs = FileSystem.get(conf); in = fs.open(new Path("hdfs://192.168.130.54:19 ...
- 严重: Error starting static Resources java.lang.IllegalArgumentException:
严重: Error starting static Resources java.lang.IllegalArgumentException: Document base E:\myworkspace ...
- Eclipse启动Tomcat时发生java.lang.IllegalArgumentException: <session-config> element is limited to 1 occurrence
在学习struts 2时,为了方便,直接从下载的struts的apps目录下的struts2-blank.war压缩包下的WEB-INF\复制的web.xml,当我启动Tomcat时,发生 java. ...
- tomcat报错java.lang.IllegalArgumentException: Document base XXXXX does not exist or is not a readable directory
启动tomcat的时候报如下错误: java.lang.IllegalArgumentException: Document base F:\java\tools\tomcat\me-webapps\ ...
- java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required 严重: Exceptio ...
- java.lang.IllegalArgumentException: Illegal character in query at index 261
在BaseFragment中使用了LoadingPage,而LoadingPage的联网加载使用的是AsyncHttpClient.一直报java.lang.IllegalArgumentExcept ...
- 在访问jsp时抛java.lang.IllegalArgumentException: Page directive: invalid value for import的原因
问题:java.lang.IllegalArgumentException: Page directive: invalid value for import 环境:tomcat 7.0.65 出错原 ...
随机推荐
- layedit第三次改造
原文链接:http://www.bianbingdang.com/article_detail/105.html 作为技术人员,在网上写代码,常常涉及代码块的编写.一个好的代码块,让页面美化很多. 由 ...
- Gcd&Exgcd算法学习小记
Preface 对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法,以前也只是背下来,没有真正了解并证明过. 对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用E ...
- Vue(二十七)当前GitHub上排名前十的热门Vue项目(转载)
原文地址:https://my.oschina.net/liuyuantao/blog/1510726 1. ElemeFE/element tag:vue javascript components ...
- kodexplorer免费网盘安装教程
KodExplorer是什么? KodExplorer可道云,原名芒果云,是基于Web技术的私有云和在线文件管理系统. 用户只需通过简单环境搭建,即可使用KodExplorer快速完成私有云/私有网盘 ...
- Widows 和Linux 查看和操作端口方法
Windows 打开cmd1.netstat -n查看本机的使用的所有端口①.proto表示协议 有tcp和udp两种②.Local Address 表示本机的IP,后面跟的是我们使用的端口号③.Fo ...
- ipset和iptables配合来自动封闭和解封有问题的IP
iptables封掉少量ip处理是没什么问题的,但是当有大量ip攻击的时候性能就跟不上了,iptables是O(N)的性能.而ipset就像一个集合,把需要封闭的ip地址放入这个集合中,ipset 是 ...
- Centos 搭建邮箱系统
总结 我实操的过程,2个邮箱都没有界面,都只是邮件系统.可能还需要再部署其他东西,暂止. sendmail 比较简单,主要是发邮件,使用 stmp.还需要解决收邮件的问题和管理界面的问题. postf ...
- python | Elasticsearch-dsl常用方法总结(join为案例)
Elasticsearch DSL是一个高级库,其目的是帮助编写和运行针对Elasticsearch的查询.它建立在官方低级客户端(elasticsearch-py)之上. 它提供了一种更方便和习惯的 ...
- 解决用友U8删除用户时提示“用户已启用”不能删除的问题
USE UFSystem go DECLARE @cUser_Id NVARCHAR(20) SET @cUser_Id='用户的登录名' DELETE l FROM dbo.UA_TaskLog l ...
- Delphi 开发手机 App 与其他工具之间的比较分析
写在前头 关于各种手机App开发的工具,从2010年前后到现在已经在很多不同的场合介绍过,在元智大学.中台科技大学.德霖科技大学等不同学校的讲座.课程当中,都有类似的主题,所以对我来说,这个主题属于驾 ...