全域性異常處理的基本方法

2021-08-17 21:47:50 字數 3258 閱讀 9274

/**

* 手動處理 service 層異常和資料校驗異常的示例

*@param dog

*@param errors

*@return

*/ try catch (busines***ception e)catch (exception e)

return resp;

}

缺點:只能處理 controller 層未捕獲(往外拋)的異常,對於 interceptor(***)層的異常,spring 框架層的異常,就無能為力了。

@controlleradvice

public

class

globalexceptionhandler

@controlleradvice

public

class

globalexceptionhandler

}

@target(elementtype.method)

@retention(retentionpolicy.runtime)

@documented

public @inte***ce

exceptionhandler ;

}

@controlleradvice

public

class

globalexceptionhandler

}

public

class

busines***ception

extends

runtimeexception

}

@service

public

class

dogservice

}

public

static

void

istrue(boolean expression, string error)

}

/**

* created by kinginblue on 2017/4/10.

*@controlleradvice +@exceptionhandler 實現全域性的 controller 層的異常處理

*/@controlleradvice

public

class

globalexceptionhandler

/*** 處理所有業務異常

*@param e

*@return

*/@exceptionhandler(busines***ception.class)

@responsebody

logger.error(e.getmessage(), e);

response.setfail(e.getmessage());

return response;

}}

@restcontroller

public

class

dogcontroller

}

@data

public

class

dog ", groups = )

@min(value = 1, message = "", groups = )

private long id;

@notblank(message = "", groups = )

private string name;

@min(value = 1, message = "", groups = )

private integer age;

}

說明:@notnull、@min、@notblank 這些註解的使用方法,不在本文範圍內。如果不熟悉,請查詢資料學習即可。

其他說明:

@data 註解是 **lombok** 專案的註解,可以使我們不用再在**裡手動加 getter & setter。

在 eclipse 和 intellij idea 中使用時,還需要安裝相關外掛程式,這個步驟自行google/baidu 吧!

/**

* 使用 globalexceptionhandler 全域性處理 controller 層異常的示例

*@param dog

*@return

*/ // 執行業務

dog newdog = dogservice.update(dog);

// 返回資料

resp.setdata(newdog);

return resp;

}

/**

* created by kinginblue on 2017/4/10.

*@controlleradvice +@exceptionhandler 實現全域性的 controller 層的異常處理

*/@controlleradvice

public

class

globalexceptionhandler

/*** 處理所有業務異常

*@param e

*@return

*/@exceptionhandler(busines***ception.class)

@responsebody

logger.error(e.getmessage(), e);

response.setfail(e.getmessage());

return response;

}/**

* 處理所有介面資料驗證異常

*@param e

*@return

*/@exceptionhandler(methodargumentnotvalidexception.class)

@responsebody

logger.error(e.getmessage(), e);

response.setfail(e.getbindingresult().getallerrors().get(0).getdefaultmessage());

return response;

}}

全域性異常處理 springBoot 全域性異常處理

先讚後看,月入百萬 springboot開發的web專案中,強調分層的概念,乙個完整的專案一般會劃分出controller層和service層。因此,為了 的可維護性,controller層 應該盡量簡潔,驗證一下引數,直接丟給service層處理即可 異常處理的方式無外乎兩種 在springboo...

全域性異常處理

3 丟擲異常類的使用 處理 介面無權訪問異常accessdeniedexception param e return exceptionhandler accessdeniedexception.class public responseentity handleaccessdeniedexcept...

struts 異常處理 全域性異常處理

記錄一下全域性異常處理的過程 處理主動丟擲的異常,轉向錯誤提示頁面。1 寫乙個自己的異常,繼承runtimeexception,從父類生成構造方法 package me.yndy.srtp.exception suppresswarnings serial public class errorexc...