spring boot: GlobalDefaultExceptionHandler方法內的友好錯誤提示,全局異常捕獲
阿新 • • 發佈:2018-07-26
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方法內的友好錯誤提示,全局異常捕獲