今天这篇主要提到了两种Java本身提供的异常illegalArgumentException和illegalStatusException,这两个看名字就很容易知道是什么意思,所以用在对应的地方也很直观,但是在实际系统中其实不应该用到这一类Java的异常,或者换句话说,由数据引起的异常,本就应该有开发自行编写有关异常捕捉的代码,就比如我们自己的operation相关代码。
就像之前提到的“系统尽早崩溃”,异常就应该尽快的在前面校验部分就抛出,而不是到后续用到的时候再使用。同时,每次抛出异常的部分,都应该使用公共通用的一套异常代码。就像errorCode,相同的errorCode能够在前后台通用,能够被翻译,用固定格式、较少的数据传递更多的信息。
也有一些地方,比如很多单独为客户做的一些接口,里面会遇到很多业务上特殊的错误,这时候都是在对应接口中或者单独起一个常量类来保存完整的异常信息。这一点不能说完全错误,但感觉还是少用,能用标准通用的异常就尽量标准的异常。
不过,还有一部分虽然用了标准异常,但是并不准确。就像今天早上有一个ICS接口报错是数据过期,但是我查了代码和数据之后发现其实是在msg中的cargo没有和container绑定,但是最后报异常确实报了数据过期。同样的还有一个情况在接口的commonHandler中也有很多报错用了的是addErrorMessage方法而不是addErrorMessageAndBreak,导致有些报错在后面才发现。