欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

SpringBoot項(xiàng)目實(shí)戰(zhàn)之統(tǒng)一(全局、特殊、自定義)異常處理

一、應(yīng)用場(chǎng)景

??當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),我們不希望頁(yè)面直接返回“404”、“500”等信息,為了提高用戶體驗(yàn),我們需要統(tǒng)一處理異常,進(jìn)行友好的提示!

10年積累的做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有蓋州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

SpringBoot項(xiàng)目實(shí)戰(zhàn)之統(tǒng)一(全局、特殊、自定義)異常處理

二、異常分類

??(1)統(tǒng)一異常處理:推薦,只要出現(xiàn)異常,返回統(tǒng)一結(jié)果。

??(2)特殊異常處理:一般不使用,因?yàn)闊o(wú)法準(zhǔn)確定位到項(xiàng)目的異常。

??(3)自定義異常處理:自己創(chuàng)建異常,實(shí)現(xiàn)返回結(jié)果,需要手動(dòng)調(diào)用(try...catch)才會(huì)執(zhí)行!

三、實(shí)現(xiàn)代碼

?? 異常實(shí)現(xiàn)的底層原理AOP(面向切面編程),即不改變?cè)械拇a,實(shí)現(xiàn)某個(gè)功能。

??<font color=red>注意:特殊異常處理的優(yōu)先級(jí)高于統(tǒng)一異常處理!</font>

/**
 * @BelongProjecet: guli-framework-parent
 * @BelongPackage: com.guliedu.eduservice.handler
 * @ClassName: GlobalExceptionHandler
 * @Description: 【推薦>方式一】統(tǒng)一異常處理:只要出現(xiàn)異常,返回統(tǒng)一結(jié)果
 *               【方式二】特殊異常處理:如果出現(xiàn)ArithmeticException異常,才會(huì)處理
 *                          特殊異常處理>統(tǒng)一異常處理(優(yōu)先級(jí))
 *               【推薦>方式三】自定義異常處理:自己創(chuàng)建異常,自己實(shí)現(xiàn)返回結(jié)果
 * @Copyright: 2019-xxx-Powered by 研發(fā)四部
 * @Author: LinHong
 * @CreateDate: 2019/11/13 20:42
 * @Version: V1.0
 */
@ControllerAdvice
public class GlobalExceptionHandler {
    /**
     * 功能描述
     *
     * @MethodName:
     * @MethodParam:
     * @Return:
     * @Description: 處理全局異常的方法
     * @Author: LinHong
     * @CreateDate: 2019/11/13 20:47
     */
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public R error(Exception e) {
        e.printStackTrace();
        return R.error().message("執(zhí)行了全局異常處理方法......");

    }

    /**
     * 功能描述
     *
     * @MethodName: error
     * @MethodParam: [e]
     * @Return: com.guliedu.common.R
     * @Description: 處理特殊異常的方法
     * @Author: LinHong
     * @CreateDate: 2019/11/13 20:52
     */
    @ExceptionHandler(ArithmeticException.class)
    @ResponseBody
    public R error(ArithmeticException e) {
        e.printStackTrace();
        return R.error().message("執(zhí)行了特殊異常處理方法......");

    }
    /**
     * 功能描述
     * @MethodName: error
     * @MethodParam: [e]
     * @Return: com.guliedu.common.R
     * @Description: 自定義異常--需要手動(dòng)拋出異常!!!
     * @Author: LinHong
     * @CreateDate: 2019/11/14 10:05
     */
    @ExceptionHandler(EduException.class)
    @ResponseBody
    public R error(EduException e) {
       // EduException e1 = new EduException(20001,"自定義異常測(cè)試,操作失敗......";
        e.printStackTrace();
        return R.error().code(e.getCode()).message(e.getMsg());

    }

}

EduException自定義異常類

繼承運(yùn)行時(shí)異常類,添加兩個(gè)屬性即可:狀態(tài)碼、返回信息。

/**
 * @BelongProjecet: guli-framework-parent
 * @BelongPackage: com.guliedu.eduservice.handler
 * @ClassName: EduException
 * @Description: 自定義異常
 * @Copyright: 2019-xxx-Powered by 研發(fā)四部
 * @Author: LinHong
 * @CreateDate: 2019/11/14 9:58
 * @Version: V1.0
 */
@Data
//無(wú)參構(gòu)造
@NoArgsConstructor
//有參構(gòu)造
@AllArgsConstructor
public class EduException extends RuntimeException{
    //狀態(tài)碼
    private Integer code;
    //返回信息
    private String msg;

}

(自定義異常測(cè)試)異常位置

注意:自定義異常需要手動(dòng)調(diào)用,才會(huì)執(zhí)行!

    /**
         *測(cè)試特殊異常 ArithmeticException
         */
        try {
            int i =666/0;
        } catch (Exception e) {
            //拋出自定義異常
            throw new EduException(20001,"自定義異常測(cè)試,執(zhí)行此操作.......");
        }

R 返回結(jié)果類(附)

/**
 * @BelongProjecet: guli-framework-parent
 * @BelongPackage: com.guliedu.common
 * @ClassName: R
 * @Description: 返回結(jié)果類--鏈?zhǔn)骄幊? * @Copyright: 2019-xxx-Powered by 研發(fā)四部
 * @Author: LinHong
 * @CreateDate: 2019/11/13 14:32
 * @Version: V1.0
 */
@Data
public class R {
    private boolean success;
    private Integer code;
    private String message;
    private Map<String, Object> data = new HashMap<>();
    //構(gòu)造方法私有化
    private R(){}
    //對(duì)外提供可以訪問(wèn)方法
    public static R ok(){
        R r = new R();
        r.setSuccess(true);
        r.setCode(ResultCode.OK);
        r.setMessage("成功");
        return r;
    }

    public static R error(){
        R r = new R();
        r.setSuccess(false);
        r.setCode(ResultCode.ERROR);
        r.setMessage("失敗");
        return r;
    }

    public R message(String message){
        this.setMessage(message);
        return this;
    }

    public R code(Integer code){
        this.setCode(code);
        return this;
    }

    public R data(String key, Object value){
        this.data.put(key, value);
        return this;
    }

    public R data(Map<String, Object> map){
        this.setData(map);
        return this;
    }
}

ResultCode數(shù)據(jù)狀態(tài)碼接口(附)

package com.guliedu.common;

/**
 * @BelongProjecet: guli-framework-parent
 * @BelongPackage: com.guliedu.common
 * @ClassName: ResultCode
 * @Description: 編寫統(tǒng)一結(jié)果返回,創(chuàng)建公共模塊--定義返回?cái)?shù)據(jù)狀態(tài)碼
 * @Copyright: 2019-xxx-Powered by 研發(fā)四部
 * @Author: LinHong
 * @CreateDate: 2019/11/13 14:20
 * @Version: V1.0
 */
public interface ResultCode {
    //成功
    int OK = 20000;
    //失敗
    int ERROR =20001;
    //用戶名或密碼錯(cuò)誤
    int LOGIN_ERROR =20002;
    //權(quán)限不足
    int ACCEAA_ERRORR=20003;
    //遠(yuǎn)程調(diào)用失敗
    int REMOTE_ERROR = 20004;
    //重復(fù)操作
    int REPEAT_ERROR = 20005;
}

?學(xué)習(xí)、實(shí)戰(zhàn)、總結(jié)、分享,讓生活變得更美好!
?林大俠CSDN博客:https://coding0110lin.blog.csdn.net/ ?歡迎轉(zhuǎn)載,一起技術(shù)交流探討!

分享名稱:SpringBoot項(xiàng)目實(shí)戰(zhàn)之統(tǒng)一(全局、特殊、自定義)異常處理
分享地址:http://chinadenli.net/article20/pgpico.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化移動(dòng)網(wǎng)站建設(shè)微信公眾號(hào)軟件開發(fā)建站公司面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化