首页 > 编程语言 >2024年1月Java项目开发指南18:自定义异常输出

2024年1月Java项目开发指南18:自定义异常输出

时间:2024-10-10 20:34:56浏览次数:7  
标签:stackTrace Java 自定义 18 element Ansi import org 异常

image

一般情况下,报错信息一大堆,值得注意的只有三个地方:

  1. 哪个文件发生了错误
  2. 哪一行发生了错误
  3. 错误原因是什么

只要知道这三个东西就能快速的定位到错误发生的位置并且根据提示解决。

如果你也喜欢我的这种异常输出(如文章顶部图)

那么可以参考以下代码:

package com.guaiguailang.harmony.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.fusesource.jansi.Ansi;

@RestControllerAdvice
@Slf4j
//全局异常拦截器
public class GlobalExceptionHandler {
    // 全局异常拦截
    @ExceptionHandler
    public void handlerException(Exception e) {
        // 打印堆栈跟踪中的第一个元素(通常是出错的地方)
        StackTraceElement[] stackTrace = e.getStackTrace();
        if (stackTrace.length > 0) {
            StackTraceElement element = stackTrace[0]; // 第一个元素通常是抛出异常的点
            String errorMessage = "["+element.getLineNumber()+"]"+element.getFileName()+" ("+element.getClassName()+")";
            System.err.println(Ansi.ansi().fgRed().a(errorMessage).reset());
            System.err.println(Ansi.ansi().fgRed().a("错误原因:"+e.getMessage()).reset()+"\n");
        }


    }
}

请参考上述代码进行修改,满足自己所需

标签:stackTrace,Java,自定义,18,element,Ansi,import,org,异常
From: https://www.cnblogs.com/mllt/p/18457079/project202401-18

相关文章

  • springboot+vue基于Java的教材管理系统设计与实现【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在教育信息化的大潮中,传统教材管理方式逐渐暴露出效率低下、信息不透明等问题。随着高校规模的不断扩大,教材管理工作变得日益复杂,涵盖了从教材采购、库存管理到分发调拨等多个环节。传统的纸质记录和人工管理方式已难以满足当前高效、......
  • Java中类加载机制的学习
    类加载机制目录类加载机制类的加载加载连接初始化类加载器及加载机制类加载器类加载机制类的加载类加载分为三个步骤:加载、连接、初始化。加载类加载指的是将class文件读入内存,并为之创建一个java.lang.Class对象,即程序中使用任何类时,系统都会为之建立一个java.lang.Class......
  • Java入门
    下载和卸载Java8*一,卸载1.在此电脑打开属性2.高级设置找的系统变量找的Javahome我们可以看到Javahome的地址方便我们后面卸载Java3.在找的path里面的关于Java删除4.现在Java就删除干净了二下载我们现在知道自己电脑的属性就可以下载了(下载sh'......
  • 08 JAVA 继承多态抽象类接口
    1函数题1,super.a来明确访问父类的字段。super(a);表示调用父类的构造函数,并传递参数a2,抽象类继承需要写新的构造器,重写抽象方法classCircleextendsshape{privatedoubleradius;publicCircle(doubleradius){this.radius=radius;}//构......
  • Odoo18.0 支付宝
    odoo16.0官方将支付宝模块弃用了,但是需求还在,我们也不太可能去使用推荐的asipay,因此,我们决定,自己手动实现它。安装与配置首先,我们在应用中安装我们的支付宝模块:  安装好之后,我们在销售-配置-在线支付-支付提供商菜单进入支付宝配置界面: 这里对各个参数简单介绍一下:......
  • [java毕业设计]免费分享一套SpringBoot+Vue电影推荐(电影网)系统【论文+源码+SQL脚本
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue电影推荐(电影网)系统,分享下哈。项目视频演示【免费】SpringBoot+Vue电影推荐(电影网)系统Java毕业设计_哔哩哔哩_bilibili项目介绍如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们......
  • 为什么现在Java面试难度越来越高了?
    前几天收到一位粉丝私信,说的是他才一年半经验,去面试却被各种问到分布式,高并发,多线程之间的问题。基础层面上的是可以答上来,但是面试官深问的话就不会了!被问得都怀疑现在Java招聘初级岗位到底招的是初级开发还是架构,是不是面进去就能直接进架构组了?(手动狗头)但其实有一说一,面......
  • Java日总结---多表查询&事务
    多表查询简介:设计员工和部门两个表点击查看代码#创建部门表CREATETABLEdept(didINTPRIMARYKEYAUTO_INCREMENT,dnameVARCHAR(20));#创建员工表CREATETABLEemp(idINTPRIMARYKEYAUTO_INCREMENT,NAMEVARCHAR(10),genderCHAR(1),--性别salaryDOU......
  • JAVA面试八股文(三)
    MybatisMybatis的一级、二级缓存? 一级缓存存储的作用域是session,当sessionflush或者close之后,session中的缓存会失效,此时一级缓存就开启 二级缓存和一级缓存机制相同,hashmap存储,作用域为mapper,二级缓存一般不用,因为他不好控制缓存的刷新,我们一般是用的是redisMyBatis的......
  • [面试] java开发面经-1
    前言目录1.看到你的简历里说使用Redis缓存高频数据,说一下Redis的操作2.说一下Redis的缓存击穿、缓存穿透、缓存雪崩3.你的项目中使用了ThreadLocal,那么当有两个请求同时发出时,会怎么处理,可以同时处理两个请求吗4.使用的是哪个版本的git5.假如在git提交的有两份代码,该怎......