当前位置:新励学网 > 秒知问答 > 系统出现解析返回值异常是怎么回

系统出现解析返回值异常是怎么回

发表时间:2024-08-01 10:07:24 来源:网友投稿

这样开发者必须要通过给定的静态方法创建成果或者失败的Result;如果返回失败,那一定要通过IError去构建返回结构,code一定是IError里面定义的,失败信息可以是默认的也可以是我们自己定义的。

\r 通过简单的四个类,将整个项目中的变量校验、异常定义和返回结果串联起来,统一处理,方便扩展。如果一个项目中大家都各自按照自己的习惯去定义异常、处理返回值,那么整个项目一定是无比的杂乱,让人抓狂。统一的异常处理和返回值定义是每个项目中必不可缺的一部分。\r 1、变量值的校验项目中我们经常能遇到对一个方法的返回值判断是否为空,如:\r 或者是这样:\r 亦或者是这样的:\r 这些写法本身是没有什么问题的,抛出异常后我们也可以通过统一的异常处理方式来捕获异常,再返回相应的异常文案即可。但是我们可以使用一种更优雅的方式去定义异常和进行变量校验。\r 我们先定义一个IError接口,如下:\r 这里我们用到了java8的接口默认方法,实现了这个接口的任何对象,都会自动继承这些方法。我们再定义一个该接口的实现枚举Errors:\r 这时,我们就可以通过另一种方式去判断是否为空了:\r 这里看到的变量值的判断和我们使用Assert的判断并没有什么区别,只是Assert会抛出IllegalArgumentException异常而已。\r 没什么区别主要是因为我们抛出的是RuntimeException,并没有充分利用我们定义的枚举code值。如果我们抛出一个自定义异常,又会怎么样呢?\r 2、构建统一的异常在一个项目中,我们期望只定义一个业务异常类,不同类型的异常通过异常code进行区分,而不希望为每种类型的业务异常都去定义一个异常类。只定义一个业务异常类,有利于我们做统一异常处理。所以我们定义了一个业务异常类,如下:\r 这个业务异常类是以第一部分我们定义的IError作为参数,这样我们就能获得Errors.ILLEGAL_ARGUMENT或者Errors.SERVICE_ERROR的code,从而可以区分这个业务异常的类型。所以IError接口中抛出RuntimeException的地方我们可以做如下修改:\r 此时抛出的异常即为:。\r 在枚举Errors中,我们已经定义了SERVICE_ERROR和ILLEGAL_ARGUMENT两个类型的异常。当我们需要定义其他异常时,只需要自定义一个枚举并实现IError接口即可。

3、构建统一的返回值一般采用如下格式定义接口返回值:\r 最简单的方式就是我们定义一个Result类,让所有接口都返回这个对象:\r 我们只需要如下返回即可:\r 但是这样做有一个问题,如果有人返回一个code=60001但是我们又没有定义60001该怎么办呢?就是说,我们不能让开发者主动创建Result,而是提供静态方法供开发者使用。如下代码:\r \r 通过简单的四个类,将整个项目中的变量校验、异常定义和返回结果串联起来,统一处理,方便扩展。\r

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!