最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot框架的全局異常處理方案詳解

 更新時(shí)間:2021年03月12日 14:27:58   作者:一起隨緣  
這篇文章主要介紹了springboot框架的全局異常處理方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

系統(tǒng)框架搭建的前期過程中,為了約束代碼規(guī)范,我們會(huì)對(duì)一些通用功能做一些處理,比如聲明一些系統(tǒng)公用錯(cuò)誤類、封裝通用返回結(jié)果、統(tǒng)一異常處理等,這樣做的優(yōu)勢(shì)是團(tuán)隊(duì)開發(fā)過程中能夠形成統(tǒng)一的代碼規(guī)范,增強(qiáng)代碼可讀性,同時(shí)又便于后期代碼維護(hù)。本文主要介紹下框架中異常的處理:

1.聲明全局異常處理類,并添加@ControllerAdvice和@RestController注解
代碼如下:

@ControllerAdvice
@RestController
public class GlobalExceptionHandler {
	
	private final Logger logger = Logger.getLogger(GlobalExceptionHandler.class);

	//空指針異常
  @ExceptionHandler(NullPointerException.class)
  public Map<String, Object> nullPointer(NullPointerException e,HttpServletRequest req){
    logger.error(e.getMessage());
		e.printStackTrace();
    return ResultObject.newResultObj(ErrorCode.NULLPOINTER);
  }
	
	//IO異常
	@ExceptionHandler(IOException.class,HttpServletRequest req, HttpServletResponse res)
  public Map<String, Object> IOException(IOException e){
  	 logger.error(e.getMessage());
		 e.printStackTrace();
     return ResultObject.newResultObj(ErrorCode.IOEXCEPTION);
  }
  
	
	//權(quán)限不足異常	
	@ExceptionHandler(UnauthorizedException.class)
	public Map<String, Object> unauth(HttpServletRequest req, HttpServletResponse res){
		return ResultObject.newResultObj(ErrorCode.UNAUTH);
	}
	
	//未登錄異常	
	@ExceptionHandler(AuthorizationException.class)
	public Map<String, Object> unlogin(HttpServletRequest req, HttpServletResponse res){
		return ResultObject.newResultObj(ErrorCode.NOTLOGIN);
	}
	
	//其它異常
	@ExceptionHandler(Exception.class)
	public Map<String, Object> error(Exception e,HttpServletRequest req, HttpServletResponse res){
		logger.error(e.getMessage());
		e.printStackTrace();
		return ResultObject.newResultObj(ErrorCode.SYSTEM);
	}
	
}

2.聲明系統(tǒng)通用錯(cuò)誤處理類

/**
 * 系統(tǒng)通用錯(cuò)誤處理類
 */
public class ErrorCode {

  //返回碼
  private int code = 0;
	
  //描述信息
  private String errmsg = "SUCCESS";
	
  //成功
  public static final ErrorCode SUCCESS 					  = new ErrorCode(0,"SUCCESS");
  public static final ErrorCode PARAMS 					  = new ErrorCode(100000,"參數(shù)錯(cuò)誤");
  public static final ErrorCode SYSTEM 					  = new ErrorCode(100001,"系統(tǒng)錯(cuò)誤");
	public static final ErrorCode UNLOGIN 					  = new ErrorCode(100002,"未登錄");
  public static final ErrorCode UNAUTH 					  = new ErrorCode(100003,"權(quán)限錯(cuò)誤");
	public static final ErrorCode NULLPOINTER 					= new ErrorCode(100004,"空指針錯(cuò)誤");
	public static final ErrorCode IOEXCEPTION 					= new ErrorCode(100005,"IO錯(cuò)誤");
  public static final ErrorCode UPLOAD_FAIL 					= new ErrorCode(100006,"文件上傳失敗");
  public static final ErrorCode REPEAT 					  = new ErrorCode(100007,"數(shù)據(jù)已存在");

  public ErrorCode() {}

  @Override
  public String toString() {
    return String.format("{\"errmsg\": \"%s\", \"code\": %d}", errmsg, code);
  }

  public int getCode() {
    return code;
  }

  public ErrorCode setCode(int code) {
    this.code = code;
    return this;
  }

  public String getErrmsg() {
    return errmsg;
  }

  public ErrorCode setErrmsg(String errmsg) {
    this.errmsg = errmsg;
    return this;
  }

  public ErrorCode(int code, String errmsg) {
    this.code = code;
    this.errmsg = errmsg;
  }

}

3.聲明全局異常處理類中的結(jié)果返回類

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import com.xxx.ErrorCode;//此處引用自己errorCode類所在的包路徑
import org.json.JSONObject;

public class ResultObject {	
	
	/**
	 * 輸出錯(cuò)誤信息
	 * @param errorCode
	 */
	public static Map<String, Object> newResultObj(ErrorCode errorCode){
		Map<String, Object> obj = new HashMap<String, Object>();
		obj.put("code", errorCode.getCode());
		obj.put("errmsg", errorCode.getErrmsg());
		return obj;
	}
	
	/**
	 * 輸出帶數(shù)據(jù)的成功信息
	 * @param data
	 */
	public static Map<String, Object> newResultObj(Object data){
		Map<String, Object> obj = new HashMap<String, Object>();
		obj.put("code", ErrorCode.SUCCESS.getCode());
		obj.put("errmsg", ErrorCode.SUCCESS.getErrmsg());
		if(null != data){
			obj.put("data", data);
		}
		return obj;		
	}
	
	/**
	 * 輸出帶數(shù)據(jù)的錯(cuò)誤信息
	 * @param errorCode
	 * @param data
	 */
	public static Map<String, Object> newResultObj(ErrorCode errorCode, Object data){
		Map<String, Object> obj = new HashMap<String, Object>();
		obj.put("code", errorCode.getCode());
		obj.put("errmsg", errorCode.getErrmsg());
		if(null != data){
			obj.put("data", data);
		}
		return obj;				
	}
	
	
	/**
	 * 輸出結(jié)果
	 */
	public static void outputResult(HttpServletResponse response, ErrorCode errorCode){
		try {
			JSONObject json = new JSONObject();
			json.put("code", errorCode.getCode());
			json.put("errmsg", errorCode.getErrmsg());
			
			response.setCharacterEncoding("UTF-8");
			response.setContentType("application/json;charset=UTF-8");
			response.getWriter().write(json.toString());
		} catch (Exception e1) {
		}
	}
}

到此這篇關(guān)于springboot框架的全局異常處理方案的文章就介紹到這了,更多相關(guān)springboot全局異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot結(jié)合redis實(shí)現(xiàn)搜索欄熱搜功能及文字過濾

    springboot結(jié)合redis實(shí)現(xiàn)搜索欄熱搜功能及文字過濾

    本文主要介紹了springboot結(jié)合redis實(shí)現(xiàn)搜索欄熱搜功能及文字過濾,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Maven構(gòu)建忽略測(cè)試失敗的解決方案

    Maven構(gòu)建忽略測(cè)試失敗的解決方案

    這篇文章主要介紹了Maven構(gòu)建忽略測(cè)試失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java解壓rar文件的兩種實(shí)現(xiàn)方法

    Java解壓rar文件的兩種實(shí)現(xiàn)方法

    這篇文章主要介紹了Java解壓rar文件的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 淺析Java中局部變量與成員變量同名解決技巧

    淺析Java中局部變量與成員變量同名解決技巧

    在剛開始學(xué)習(xí)Java的時(shí)候,就了解了Java基礎(chǔ)中的變量,雖然知道這個(gè)以后會(huì)經(jīng)常用到,但沒想到了基本語法這里,竟然又冒出來了成員變量和局部變量。變來變?nèi)ヌ菀鬃屓烁銜灹耍裉煳覀兙吞魭鰜硎崂硪幌拢?/div> 2016-07-07
  • java+mysql實(shí)現(xiàn)登錄和注冊(cè)功能

    java+mysql實(shí)現(xiàn)登錄和注冊(cè)功能

    這篇文章主要為大家詳細(xì)介紹了java+mysql實(shí)現(xiàn)登錄和注冊(cè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • springboot項(xiàng)目中使用Swagger的簡(jiǎn)單示例

    springboot項(xiàng)目中使用Swagger的簡(jiǎn)單示例

    大趨勢(shì)下目前很多的項(xiàng)目都采用了前后端分離的方式進(jìn)行開發(fā),最近我接觸到的項(xiàng)目大多數(shù)都是采用了前后端分離的方式進(jìn)行開發(fā),下面這篇文章主要給大家介紹了關(guān)于springboot項(xiàng)目中使用Swagger的簡(jiǎn)單示例,需要的朋友可以參考下
    2023-04-04
  • java字符串抉擇

    java字符串抉擇

    下面給大家解析字符串連接方面的知識(shí),包括string,stringbuffer和stringbuilder等方面的知識(shí),對(duì)java字符串知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-12-12
  • 解決Java?API不能遠(yuǎn)程訪問HBase的問題

    解決Java?API不能遠(yuǎn)程訪問HBase的問題

    這篇文章主要介紹了解決Java?API不能遠(yuǎn)程訪問HBase的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java異常處理詳細(xì)介紹及實(shí)例

    java異常處理詳細(xì)介紹及實(shí)例

    這篇文章主要介紹了java異常處理詳細(xì)介紹及實(shí)例的相關(guān)資料,本文對(duì)java異常進(jìn)行了知識(shí)層次的總結(jié),需要的朋友可以參考下
    2017-04-04
  • JAVA不可變類(immutable)機(jī)制與String的不可變性(推薦)

    JAVA不可變類(immutable)機(jī)制與String的不可變性(推薦)

    這篇文章主要介紹了JAVA不可變類(immutable)機(jī)制與String的不可變性(推薦)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08

最新評(píng)論

合山市| 大姚县| 高淳县| 铅山县| 江油市| 福清市| 磐石市| 盐津县| 华容县| 普兰县| 四川省| 建昌县| 中超| 广安市| 余江县| 凤庆县| 宝丰县| 焉耆| 右玉县| 民县| 榕江县| 乌兰察布市| 安庆市| 桃江县| 西昌市| 麻城市| 岑溪市| 镇远县| 菏泽市| 辛集市| 石泉县| 砚山县| 利川市| 都安| 西乌| 融水| 天台县| 星座| 淮北市| 珲春市| 阜平县|