java中的自定义异常处理机制

这篇具有很好参考价值的文章主要介绍了java中的自定义异常处理机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在日常开发中我们难免会遇到各种各样的异常问题的发生,但是任何异常如果都在异常可能会出现的地方直接去处理会让业务逻辑显得很臃肿,代码看上去很冗余。在开发Web应用程序时,异常处理是一项非常重要的任务。异常处理可以提高程序的健壮性和稳定性。Java后端开发人员可以设计一个统一的全局异常处理方案来解决异常处理的问题,避免代码冗余,提高开发效率。在本文中,我们将介绍如何设计Java后端的全局异常处理方案。

什么是全局异常处理?

全局异常处理是一种将异常处理代码从业务逻辑中分离出来的技术。

在这里分两种全局异常处理的方式:

一、在Java中,全局异常处理使用@ControllerAdvice注解定义一个全局的异常处理类。在该类中,使用@ExceptionHandler注解捕获异常并进行处理。使用全局异常处理技术,可以统一处理异常,提高代码的复用性,降低代码的冗余度。

如下:

    // 全局异常处理类文章来源地址https://www.toymoban.com/news/detail-712277.html

@Slf4j
@RestControllerAdvice // @ResponseBody+@ControllerAdvice注解的结合体,@ControllerAdvice注解表示该类是全局异常处理类
public class ExceptionDeal {

// 根据括号内的异常种类,全局如有相应的异常,则会被此注解捕获,进行方法内的下一步操作
@ExceptionHandler(ArithmeticException.class)
public String exceptions(ArithmeticException e) {
log.info("全局异常:{}",e.getMessage());
return "算法异常";
}

// 任何空指针异常会被该方法捕获处理
@ExceptionHandler(NullPointerException.class)
public String exceptions1(NullPointerException e) {
log.info("全局异常:{}",e.getMessage());
return "空指针异常";
}
}

// 测试类
@RestController
@RequestMapping("/demo")
public class TestDemo {
@RequestMapping("/test")
public String getInfo(){
int a = 1/0;
return a+"";
}

@RequestMapping("/test1")
public String getInfos(){
String s=null;
BigDecimal bigDecimal = new BigDecimal(s);
return bigDecimal.toString();
}
}

二、利用面向切面编程(AOP)可以更方便地实现Java后端的全局统一异常处理。我们可以通过AOP将异常处理代码从业务逻辑代码中分离出来,降低代码耦合度,提高代码的可维护性和可扩展性。
@Component
@Aspect
@Slf4j
public class Aspects {

// 切入点(此处TestDemo类下的所有方法被执行时,均会被切面捕获处理)
@Pointcut("execution(* com.demo.controller.TestDemo.*(..))")
public void pt() {
}

// 制作切面
@Around("pt()")
public Object handleException(ProceedingJoinPoint pjp) throws Throwable {
Object result;
try {
result = pjp.proceed();
log.info("信息是:{}", result);
} catch (Exception e) {
log.info("异常信息:{}", e.getMessage());
return "切面捕获异常成功!";
}
return result;
}
}
// 测试类
@RestController
@RequestMapping("/demo")
public class TestDemo {
@RequestMapping("/test")
public String getInfo(){
int a = 1/0;
return a+"";
}

@RequestMapping("/test1")
public String getInfos(){
String s=null;
BigDecimal bigDecimal = new BigDecimal(s);
return bigDecimal.toString();
}
}



到了这里,关于java中的自定义异常处理机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java异常处理机制(二)之异常处理与捕获

    1 Error(错误): 是指程序无法处理的错误,表示运行应用程序时比较严重的问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java 虚拟机)出现的问题。 2 异常(Exception): 是指在程序执行时由于程序处理逻辑上的错误而导致程序中断的一种指令流。通俗的

    2024年02月05日
    浏览(105)
  • java异常处理机制(三)常见异常

    Java常见的异常包括但不限于以下几种: 1. NullPointerException(空指针异常):当试图调用实例方法或访问实例变量时,对象引用为 null 时抛出。 2. ArrayIndexOutOfBoundsException(数组越界异常):当访问数组中不存在的元素时抛出。 3. ClassCastException(类转换异常):当试图将对象强

    2024年02月05日
    浏览(49)
  • 【JAVA 异常处理机制】

    在Java编程中,异常处理是一种重要的机制,用于处理程序运行时可能出现的错误和异常情况。异常处理机制可以帮助开发者优雅地处理异常,提高程序的健壮性和可靠性。 提示:以下是本篇文章正文内容,下面案例可供参考 java中所有错误的超类为:Throwable。其下有两个子类

    2024年02月11日
    浏览(45)
  • Java 异常处理机制(全)

    1.1  异常定义     (1)在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。     (2)

    2024年02月08日
    浏览(46)
  • 最全最详细的Java异常处理机制

            在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。              程序

    2024年01月23日
    浏览(38)
  • 9.Java中异常处理机制是什么

    一:try,catch捕获异常 下面展示一些 内联代码片 。 如果执行try块里的业务逻辑代码时出现异常,系统自动生成一个异常对象,当Java运行时环境收到异常对象时,会寻找能处理该异常对象的catch块,如果找到合适的catch块,则把该异常对象交给该catch块处理,这个过程被称为捕

    2024年02月01日
    浏览(34)
  • 从实体按键看 Android 车载的自定义事件机制

    在汽车数字化、智能化变革的进程中,越来越多的车机设计或部分、或全部地舍弃了实体按键,进而把车主操作的入口转移到了车机 UI 以及语音助手。 但统一、高效的零层级 UI 颇为困难,语音的准确率、覆盖率亦不够完善,那么在当下的阶段适当地保留部分实体按键是比较

    2024年02月16日
    浏览(40)
  • Java中的异常Exception和捕获,自定义异常

    1.1 什么是程序的异常  在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的。 异常 :指的是程序在执行过程中,出现的非正常情况,如果不处理最终会导致JVM的非正常停

    2023年04月20日
    浏览(41)
  • 图解transformer中的自注意力机制

    本文将将介绍注意力的概念从何而来,它是如何工作的以及它的简单的实现。 在整个注意力过程中,模型会学习了三个权重:查询、键和值。查询、键和值的思想来源于信息检索系统。所以我们先理解数据库查询的思想。 假设有一个数据库,里面有所有一些作家和他们的书籍

    2024年02月09日
    浏览(46)
  • 【Java高级应用:深入探索Java编程的强大功能,JVM 类加载机制, JVM 内存模型,垃圾回收机制,JVM 字节码执行,异常处理机制】

    本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题 中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:

    2024年01月16日
    浏览(88)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包