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

2023-09-21 11:47:15

对于业务比较复杂的接口,可能存在方法嵌套,每个方法都可能会报错,出现异常,那么需要把异常信息返回给接口调用者,如何实现呢?
(1)捕获异常进行处理,不返回
controller代码

@AllArgsConstructor
@RestController
@Slf4j
public class DemoController {
    private IDemoService demoService;
    @GetMapping("exceptionTest")
    public Result exceptionTest(Integer integer1, Integer integer2) {
        int a = demoService.exceptionTest(integer1, integer2);
        return Result.success(a);
    }
}

service代码

@Service
public class DemoServiceImpl implements IDemoService {

    @Override
    public int exceptionTest(Integer integer1, Integer integer2) {
        Integer result = 0;
        try {
            result = integer2/integer1;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}

业务代码出现异常,可进行捕获,捕获之后能解决,则处理,如不能处理,则需要抛出异常
抛出异常的2种方式:
第一种方法抛出Exception,第二钟方法抛出RuntimeException
Exception :受检查的异常,这种异常是强制我们catch或throw的异常。你遇到这种异常必须进行catch或throw,如果不处理,编译器会报错。比如:IOException。

RuntimeException:运行时异常,这种异常我们不需要处理,完全由虚拟机接管。比如我们常见的NullPointerException,我们在写程序时不会进行catch或throw。

service抛出异常在这里插入图片描述
对service的方法抛出的异常,调用时必须进行捕获处理或者声明抛出
在这里插入图片描述
controller捕获异常,可以处理或者继续抛出

在这里插入图片描述
抛出异常,告知调用者报错信息,有些因操作不当或者配置问题,可进行排查。
一般不在被调用的方法捕获异常,抛出异常,调用者捕获异常进行处理,如果无法处理,继续抛出,直到最顶层的调用者进行处理。
Springboot框架写接口时,建议在controller的方法里面捕获异常并处理。

更多推荐

JavaScript速成课--面向对象程序设计

目录一.类的定义和实例化1.类的定义2.类的实例化二.访问和添加对象的属性和方法1.访问对象的属性和方法2.向对象添加对象属性和方法三.继承1.原型实现继承2.构造函数实现继承3.重新定义继承父类的方法一.类的定义和实例化在JavaScript中没有声明类的关键字,也没有对类访问的权限控制,JavaScript中使用函

力扣刷题:正则表达式匹配、

今日刷题一、正则表达式匹配题目链接:https://leetcode.cn/problems/regular-expression-matching/给你一个字符串s和一个字符规律p,请你来实现一个支持‘.’和‘*’的正则表达式匹配。‘.’匹配任意单个字符‘*’匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串

B树的插入和删除

1.B树的插入1.核心要求对m阶B树——除根节点外,结点关键字个数[m/2]−1≤n≤m−1[m/2]-1≤n≤m-1[m/2]−1≤n≤m−1子树0<关键字1<子树1<关键字2<子树2<…新元素一定是插入到最底层“终端节点”,用“查找”来确定插入位置.2.具体步骤若插入后结点关键字个数未超过上限,则无需做其他处理.在

PX4 固件常用 QGroundControl 参数设置

一、安全检查1.CBRK_USB_CHK(USB连接检查)检查USB连接飞控,若连接则不允许解锁,默认情况下有USB连接时是无法解锁的,如果需要插USB解锁,需要设置为1978482.CBRK_IO_SAFETY(安全开关检查)检查安全开关,安全开关未打开则不允许解锁,默认情况下需要打开安全开关才能解锁,如果需要禁用安

centos7安装安装python3.11,安装Home Assistant

一,下载并编译安装python3.111、python源码地址:https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz2、准备编译环境yumupdate-yyum-ygroupinstall"Developmenttools"yum-yinstallbzip

java基础-并发编程-CountDownLatch(JDK1.8)源码学习

CountDownLatch方法调用与类关系图一、初始化:publicCountDownLatch(intcount)publicCountDownLatch(intcount){if(count<0)thrownewIllegalArgumentException("count<0");this.sync=newSy

LVS负载均衡群集——LVS-NAT模式搭建和LVS-DR模式搭建

目录lvs工作模式1、NAT模式(VS-NAT)2、直接路由模式(VS-DR)3、IP隧道模式(VS-TUN)LVS调度算法LVS群集类型1)负载均衡群集LB2)高可用群集HA3)高性能运输群集HPCLVS-NAT模式搭建1、NFS部署2、web服务器部署(节点服务器)3、负载调度器配置4、使用客户端测试LVS-DR模

pod调度

定向调度通过标签选择器定向调度到node上此调度方式是硬性现在如果匹配不上会调度失败#在node上加标签klabelnodesdev4-workerzone=north#查看kgetnodedev4-worker--show-labels创建pod的yaml文件#通过标签选择器定向调度到指定nodeapiVersion

java运行以jar包的形式运行和tomcat运行的区别和联系?

Java运行以JAR包形式和Tomcat运行之间存在一些区别和联系:区别:部署方式:JAR包形式的Java应用可以作为独立的进程运行,通过命令行或脚本启动。而Tomcat是一个Web服务器和Servlet容器,需要将应用程序打包成WAR文件并部署到Tomcat中。架构:JAR包形式的应用通常是简单的独立应用,将所有的依

web自动化测试 —— cypress测试框架

一、cypress简介基于JavaScript的前端测试工具可以对浏览器中运行的任何内容进行快速、简单、可靠的测试对每一步操作都支持回看覆盖了测试金字塔模型的所有测试类型【界面测试,集成测试,单元测试】底层协议不采用WebDriver>Cypress官网:https://www.cypress.io/二、cypress

随机抽样一致RANSAC

文章目录RANSAC简介RANSAC算法Ransac在3D视觉中的用法直线拟合单应性矩阵拟合RANSAC的优缺点RANSAC的优点RANSAC的缺点RANSAC在弯曲场景中的缺点:RANSAC适用场景RANSAC简介RANSAC是RANdomSAmpleConsensus的缩写,中文翻译叫随机采样一致。它可以从一组观测

热文推荐