1. 程式人生 > >spring boot: GlobalDefaultExceptionHandler方法內的友好錯誤提示,全局異常捕獲

spring boot: GlobalDefaultExceptionHandler方法內的友好錯誤提示,全局異常捕獲

clas urn ice servlet 提示 ram oca release format

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時,報錯。能友好提示

spring boot: GlobalDefaultExceptionHandler方法內的友好錯誤提示,全局異常捕獲