当前位置: 首页 > news >正文

优化系统报错提示信息,提高人机交互(一)

1、常规报错及处理

package com.example.demo.controller;import com.example.demo.service.IDemoService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@AllArgsConstructor
@RestController
@Slf4j
public class DemoController {private IDemoService demoService;@GetMapping("exceptionTest")public Integer exceptionTest(){Integer result = 0;Integer integer1 = 0;Integer integer2 = 2;result = integer2/integer1;return result;}}

调用接口,返回结果如下:
调用者得到的反馈信息
服务器端报错:

java.lang.ArithmeticException: / by zeroat com.example.demo.controller.DemoController.exceptionTest(DemoController.java:21) ~[classes/:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]....

一般接口报错,前端根据status为500可判断出服务器端报错,但是无法判定什么原因,这时候只能联系后端服务,后端根据日志判断出代码的DemoController.java:21出现bug,然后修复bug,更新程序解决问题。
这个示例中的问题明显是程序的bug,这样解决起来无可厚非,但是如果是一些复杂的系统,需要用户按照一定流程,需要进行一些配置,如果用户在某些环节操作不当,导致其他模块出错,那么这时候可以判定是系统没有错,是用户的使用问题,这时候接口不能只返回服务器报错,但是前端无法给用户一些提示信息和错误的原因,告知客户哪些地方操作不对,需要更改配置或者做一下前置操作,那么如何优化呢?
(1)加一些判断,在调用当前接口处理某些逻辑事,如果发生错误,先捕获异常,然后在catch代码块判断前置条件是否满足,不满足则返回提示信息;
(2)捕获异常并处理,返回提示信息
(3)前端在调接口前,先调一个验证接口,通过再调目标接口,如常规字段的验证,前端利用js即可完成

返回信息,有2种:第一种是在参数中返回,这种比较简单,对于一些简单的操作可采用;第二种则是抛出异常,代替参数返回,如上面的接口,发生错误,系统抛出异常,代替了接口自身返回String的方式

2、错误处理提示示例
接口修改下,2个整数相除,第二个参数除以第一个参数,返回结果
(1)对异常进行捕获,并抛出异常

@GetMapping("exceptionTest")public Integer exceptionTest(Integer integer1,Integer integer2){Integer result = 0;try {result = integer2/integer1;} catch (Exception e) {if (0 == integer1){throw new RuntimeException("除数不能为0");}}return result;}

抛出运行异常

抛出异常接口调用结果

发现抛出异常,但是到不了前端,这种时候前端可以判断作为除数的数,是否为0,如果为0,则直接提示,做好校验。那么假如前端不做校验,后端接口应该怎么处理呢?能不能优化

经过一番优化,达到了下面的效果
优化效果
这样接口返回了报错原因,前端可以提示给用户,提高了人机交互。

具体怎么实现的,请继续查看另一篇:优化系统报错提示信息,提高人机交互(二)

http://www.lryc.cn/news/172453.html

相关文章:

  • FPGA纯verilog实现8路视频拼接显示,提供工程源码和技术支持
  • spring boot项目一次性能测试的总结
  • 10分钟设置免费海外远程桌面
  • 基于复旦微的FMQL45T900全国产化ARM核心模块(100%国产化)
  • 2023.9.11 关于传输层协议 UDP和TCP 详解
  • thinkphp8路由
  • Python统计pdf中英文单词的个数
  • Kindle电子书下载功能关闭怎么办,借助calibre和cpolar搭建私有的网络书库公网访问
  • ubuntu、linux in window安装docker教程
  • clickhouse学习之路----clickhouse的特点及安装
  • STM32 驱动
  • JavaScript系列从入门到精通系列第五篇:JavaScript中的强制类型转换包含强制类型转换之Number,包含强制类型转换之String
  • 动力节点老杜JavaWeb笔记(全)
  • 【微信小程序开发】宠物预约医疗项目实战-注册实现
  • 聚观早报 | 飞书签约韵达速递;蔚来首颗自研芯片“杨戬”量产
  • zookeeper + kafka
  • wordpress添加评论过滤器
  • 工具篇 | Gradle入门与使用指南
  • Wireshark TS | MQ 传输缓慢问题
  • flink集群与资源@k8s源码分析-回顾
  • 学习心得09:C++新特性
  • 前端框架vBean admin
  • 云原生周刊:Grafana Beyla 发布 | 2023.9.18
  • C++ std::unique_lock 用法
  • Pytorch C++ 前端第二部分:输入、权重和偏差
  • 面试题:RocketMQ 如何保证消息不丢失,如何保证消息不被重复消费?
  • uniapp打包安卓后在安卓屏上实现开机自启动
  • 浅谈KNX总线智能照明控制系统在北京南站房中的应用
  • 深入了解Java的核心库
  • 嵌入式:驱动开发 Day9