首页 > 编程语言 >java异常报警

java异常报警

时间:2024-05-07 23:12:17浏览次数:33  
标签:java String JSONObject 报警 public text msg 异常 annotation

`@Component
@Aspect
@Slf4j
public class ServiceExceptionHandler {

@Resource
ExceptionWarnSend send;

//Service层切点
@Pointcut("@annotation(mrh.com.modules.app.annotation.ServiceJobExcepCatch)")
public  void serviceAspect() {
}


//全局异常注解
@Around("@annotation(com.modules.app.annotation.ServiceJobExcepCatch)  || @within(com.modules.app.annotation.ServiceJobExcepCatch)")
public Object serviceJobExceptionHandler(ProceedingJoinPoint pjp) throws Exception {
    String apiOperation="";
    Object proceed =null;
    try {
        Signature signature = pjp.getSignature();
        MethodSignature methodSignature = (MethodSignature)signature;
        Method targetMethod = methodSignature.getMethod();
        if(targetMethod!=null){
            ApiOperation annotation = targetMethod.getAnnotation(ApiOperation.class);
            if (annotation!=null){
                apiOperation  = annotation.value();
            }else{
                System.out.println("############ annotation 为null ");
            }
        }else{
            System.out.println("############ apiOperation为null");
        }
        proceed = pjp.proceed();
    } catch (Exception e) {
        e.printStackTrace();
        String stackTrace = e.getStackTrace()[0].toString();
        String msg = apiOperation + "异常##" + stackTrace + "##" + e.toString();
        log.debug("出现了异常!!!"+msg);
        send.sendWarnInfo(msg); //报警
        throw e;
    } catch (Throwable throwable) {
        throwable.printStackTrace();
    }
    return proceed;
}

}

@Component
@Slf4j
public class ExceptionWarnSend {

@Value("${environment}")
String environment;

private static final String url="https://oapi.dingtalk.com/robot/send?access_token=xxxx";


public void sendWarnInfo(String msg){
    WebClient webClient = WebClient.create();

    JSONObject text=new JSONObject();
        text.put("content",msg+" 来自"+environment);  //异常信息

    JSONObject bodys = new JSONObject();
        bodys.put("msgtype","text");
        bodys.put("text",text);

    Flux<JSONObject> flux  =webClient.post().uri(url)
            .contentType(MediaType.valueOf(MediaType.APPLICATION_JSON_UTF8_VALUE))
            .bodyValue(bodys.toJSONString()).retrieve().bodyToFlux(JSONObject.class);

    JSONObject jsonObject = flux.blockFirst();
    String errcode = jsonObject.get("errcode").toString();
    if(errcode.equals("0")){
        log.debug("报警发送成功");
    }else{
        log.error("报警发送失败"+jsonObject.get("errmsg").toString());
    }
}

}

加在方法上面
@ApiOperation("秒杀")
@ServiceJobExcepCatch

`

标签:java,String,JSONObject,报警,public,text,msg,异常,annotation
From: https://www.cnblogs.com/lpcyj/p/18178661

相关文章

  • IDEA多版本Java
    过程到官网下载不同版本的JDK解压到指定的路径在IDEA中添加其他版本的JDK,使用时只需要进行切换就可以。JDK下载JDK下载地址:http://jdk.java.net/JDK8下载地址:https://www.oracle.com/java/technologies/downloads/archive/先将java安装到指定的文件路径F:\JavaEnviron......
  • [JS] idea中javascript显示无背景色,不能点击大括号收起代码
    idea idea安装组件File->Settings->pluginsmarketplace搜索安装javascriptandtypescript插件(如果marketplace搜素搜索不到,搜索下installed里是否已经安装过了;如果已经安装过了且勾选框是选中的,去勾选插件,保存。然后重新再勾选上,保存) 效果如下: ......
  • 解决远程调用三方接口:javax.net.ssl.SSLHandshakeException:sun.security.validator.Va
    一、前言最近在对接腾讯会议API接口,在鉴权完成后开始调用对方的接口,在此过程中出现调用报错:javax.net.ssl.SSLHandshakeException。二、出现原因当你在进行https请求时,JDK中不存在三方服务的信任证书,导致出现错误javax.net.ssl.SSLHandshakeException:sun.security.validator.Va......
  • java 两个列表的元素是否相等且各自元素数量相等
    示例如下:importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){List<String>list1=Arrays.asList("深圳攀峰运","深圳攀峰运","广州博纳德","广州博纳德","广州博纳德","广州博纳德");......
  • java容器化项目改造
    dockerjava项目容器化改造前后端分离项目前端https://gitee.com/yuco/eladmin-web.git后端https://gitee.com/yuco/eladmin.git要素:vuenpmspringbootmysqlredisjava后端容器化思路:了解在物理机虚拟机的部署流程,然后编写dockerfile进行容器化部署。java项目,使用mv......
  • Java测试框架Junit5基础知识点
    Junit5测试框架一:创建一个测试用例junit5的测试依赖:<!--junit5新的编程和扩展模型--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.8......
  • SpringBoot+Thymeleaf渲染下拉框异常解决
    常规方式<selectclass="form-control"name="operationType"th:field="${itemTemp.operationType}"style="width:80%"th:disabled="${readonly}"><optionvalue="">选......
  • java代码审计-某酒店管理系统
    java代码审计-某酒店后台管理系统目录java代码审计-某酒店后台管理系统1、简介2、文件上传漏洞3、CSRF漏洞4、存储型XSS1、简介文章只作研究学习,请勿非法渗透测试;该系统是使用SpringMVC+Mysql搭建开发的一套中小型企业酒店后台管理系统;这里只对源代码进行审计,第三方依赖中还......
  • JavaScript 流程控制语句详解:if语句、switch语句、while循环、for循环等
    JavaScript,作为一种广泛使用的编程语言,它的流程控制语句是构建逻辑和实现功能的基础。流程控制语句包括条件语句、循环语句和转向语句,它们是编程中不可或缺的部分。接下来,我们将一一解析这些语句,带你走进JavaScript的世界。一、什么是流程控制语句流程控制语句是用来控制程序中......
  • Jmeter调用java代码
    加密:MD5、Base64、SHA、RSA、签名混合加密:jmeter的md5加密函数:BeanShell调用java代码: 调用jar包:1)在测试计划中引入jar包2)调用代码 ......