Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 494|回复: 0

spring boot: GlobalDefaultExceptionHandler方法内的友好错误提示,全局异常捕获

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-5-3 21:48:03 | 显示全部楼层 |阅读模式

    spring boot: GlobalDefaultExceptionHandler方法内的友好错误提示,全局异常捕获

    当你的某个控制器内的某个方法报错,基本上回显示出java错误代码,非常不友好,这个时候可以通过新建GlobalDefaultExceptionHandler.java文件,

    1.加上@ControllerAdvice注解, 

    2. 然后复写defaultExceptionHandler方法,在方法上添加@ResponseBody输出注解, 

      以及@ExceptionHandler(Exception.class)注解,就能友好的已文字的信息显示错误信息l

    package com.muyang.boot22.config;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @ControllerAdvice
    public class GlobalDefaultExceptionHandler {
    	
    	
    	
    	@ExceptionHandler(Exception.class)
    	@ResponseBody
    	public String defaultExceptionHandler(HttpServletRequest req,Exception e){
    		//是返回的String.
    		
    		//ModelAndView -- 介绍 模板引擎...?
    //		ModelAndView mv = new ModelAndView();
    //		mv.setViewName(viewName);
    		
    		return "对不起,服务器繁忙,请稍后再试!";
    	}
    	
    }
    

      

    参考项目:

     

     

    pom.xml参考代码

     
      <parent>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-starter-parent</artifactId>
      	<version>1.5.9.RELEASE</version>
      </parent>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
      </properties>
    
      <dependencies>
      
      
      <!-- spring mvc,aop,restful,fastjson -->
      <dependency>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      
      
      <!-- jstl -->
      <dependency>
      	<groupId>javax.servlet</groupId>
      	<artifactId>jstl</artifactId>
      </dependency>
      
      <!-- tomcat的支持 -->
      <dependency>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-starter-tomcat</artifactId>
      	<scope>provided</scope>
      </dependency>
      <dependency>
      	<groupId>org.apache.tomcat.embed</groupId>
      	<artifactId>tomcat-embed-jasper</artifactId>
      	<scope>provided</scope>
      </dependency>
      
      
      
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        
        
        <!-- fastjson -->  
        <dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>fastjson</artifactId>
    			<version>1.2.15</version>
    		</dependency>
        
        <!-- 热部署 -->
        <dependency>
        	<groupId>org.springframework.boot</groupId>
        	<artifactId>spring-boot-devtools</artifactId>
        	<optional>true</optional>
        	<scope>true</scope>
        </dependency>
        
      </dependencies>
      
      <build>
      	<plugins>
      	
      		<!-- 热部署  -->
      		<plugin>
      			<groupId>org.springframework.boot</groupId>
      			<artifactId>spring-boot-maven-plugin</artifactId>
      			<configuration>
      				<!--fork :  如果没有该项配置,呢个devtools不会起作用,即应用不会restart -->
      				<fork>true</fork>
      			</configuration>
      		</plugin>
      		
      	</plugins>
      </build>
    

      

     

    App.java参考代码

    package com.muyang.boot22;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
    import org.springframework.context.annotation.Bean;
    import org.springframework.http.converter.HttpMessageConverter;
    
    import com.alibaba.fastjson.serializer.SerializerFeature;
    import com.alibaba.fastjson.support.config.FastJsonConfig;
    import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
    
    /**
     * Hello world!
     *
     */
    @SpringBootApplication
    public class App 
    {
    	
    	//fastJson配置
    	@Bean
    	public HttpMessageConverters fastJsonHttpMessageConverters()
    	{
    		
    		FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
    		
    		FastJsonConfig fastJsonConfig = new FastJsonConfig();
    		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
    		
    		fastConverter.setFastJsonConfig(fastJsonConfig);
    		
    		HttpMessageConverter<?> converter = fastConverter;
    		return new HttpMessageConverters(converter);
    	
    	}
    	
        public static void main( String[] args )
        {
            //System.out.println( "Hello World!" );
        	SpringApplication.run(App.class, args);
        }
    }
    

      

     

    HelloController.java样例

    package com.muyang.boot22.controller;
    
    import java.util.Map;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class HelloController 
    {
    
    	@RequestMapping("/hello")
    	public void index(Map<String, Object>map)
    	{
    		//map.put("name", "张三");
    		//return "hello";
    		int i = 1024/0;
    	}
    	
    }
    

      

    运行App.java

    访问 http://localhost:8080/hello时,报错。能友好提示

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-4 04:00 , Processed in 0.057329 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表