当前位置: 首页 > news >正文

电影在线观看兰州seo快速优化报价

电影在线观看,兰州seo快速优化报价,网络平台维护是什么工作,专注企业网站建设大型纪录片:学习若依源码(前后端分离版)之 “ 异常处理” 前言1、统一返回实体定义2、定义登录异常定义3、基于ControllerAdvice注解的Controller层的全局异常统一处理4、测试访问请求结语 前言 通常一个web框架中,有大量需要处理…

大型纪录片:学习若依源码(前后端分离版)之 “ 异常处理”

  • 前言
  • 1、统一返回实体定义
  • 2、定义登录异常定义
  • 3、基于@ControllerAdvice注解的Controller层的全局异常统一处理
  • 4、测试访问请求
  • 结语

前言

通常一个web框架中,有大量需要处理的异常。比如业务异常,权限不足等等。前端通过弹出提示信息的方式告诉用户出了什么错误。

通常情况下我们用try…catch…对异常进行捕捉处理,但是在实际项目中对业务模块进行异常捕捉,会造成代码重复和繁杂, 我们希望代码中只有业务相关的操作,所有的异常我们单独设立一个类来处理它。

全局异常就是对框架所有异常进行统一管理。若依前后端分离版本的异常处理是通过使用Spring的@RestControllerAdvice注解来实现的。这个注解可以将一个类标记为全局异常处理器,用来捕获和处理所有的控制器层抛出的异常。

它中定义了一个 GlobalExceptionHandler 类,用来处理各种类型的异常,比如权限校验异常、请求方式不支持异常、业务异常、运行时异常、系统异常、自定义验证异常和演示模式异常。每种异常都有一个对应的@ExceptionHandler注解的方法,用来返回一个AjaxResult对象,包含了错误码和错误信息。这样,前端就可以根据返回的结果来显示相应的提示或者处理逻辑。

所谓全局异常处理器就是使用@ControllerAdvice注解。示例如下:

1、统一返回实体定义

package com.ruoyi.common.core.domain;import java.util.HashMap;/*** 操作消息提醒* * @author ruoyi*/
public class AjaxResult extends HashMap<String, Object>
{private static final long serialVersionUID = 1L;/*** 返回错误消息* * @param code 错误码* @param msg 内容* @return 错误消息*/public static AjaxResult error(String msg){AjaxResult json = new AjaxResult();json.put("msg", msg);json.put("code", 500);return json;}/*** 返回成功消息* * @param msg 内容* @return 成功消息*/public static AjaxResult success(String msg){AjaxResult json = new AjaxResult();json.put("msg", msg);json.put("code", 0);return json;}
}

2、定义登录异常定义

package com.ruoyi.common.exception;/*** 登录异常* * @author ruoyi*/
public class LoginException extends RuntimeException
{private static final long serialVersionUID = 1L;protected final String message;public LoginException(String message){this.message = message;}@Overridepublic String getMessage(){return message;}
}

3、基于@ControllerAdvice注解的Controller层的全局异常统一处理

package com.ruoyi.framework.web.exception;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.LoginException;/*** 全局异常处理器* * @author ruoyi*/
@RestControllerAdvice
public class GlobalExceptionHandler
{private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);/*** 登录异常*/@ExceptionHandler(LoginException.class)public AjaxResult loginException(LoginException e){log.error(e.getMessage(), e);return AjaxResult.error(e.getMessage());}
}

@RestControllerAdvice 注解是一个组合注解,由@ControllerAdvice@ResponseBody组成,而@ControllerAdvice继承了@Component,因此@RestControllerAdvice本质上是个Component,适用于所有使用@RequestMapping方法。

@ExceptionHandler 注解是用来指定异常处理方法的,当控制器中抛出指定类型的异常时,Spring MVC会自动调用使用@ExceptionHandler标记的方法来处理异常。每种异常都有一个对应的@ExceptionHandler注解的方法,是通过在@ExceptionHandler注解中添加参数来实现的,参数是某个异常类的class,代表这个方法专门处理该类异常。

这样,当控制器中抛出不同类型的异常时,就会调用相应的@ExceptionHandler注解的方法来处理。如果有多个方法处理同一类型的异常,那么会抛出Ambiguous @ExceptionHandler异常。

如果有多个类使用@RestControllerAdvice注解,那么可以通过指定order属性来控制异常处理类的优先级,order值越小,优先级越高。

4、测试访问请求

@Controller
public class SysIndexController 
{/*** 首页方法*/@GetMapping("/index")public String index(ModelMap mmap){/*** 模拟用户未登录,抛出业务逻辑异常*/SysUser user = ShiroUtils.getSysUser();if (StringUtils.isNull(user)){throw new LoginException("用户未登录,无法访问请求。");}mmap.put("user", user);return "index";}
}

根据上面代码含义,当我们未登录访问/index时就会发生LoginException业务逻辑异常,按照我们之前的全局异常配置以及统一返回实体实例化,访问后会出现AjaxResult格式JSON数据, 下面我们运行项目访问查看效果。

界面输出内容如下所示:

{"msg": "用户未登录,无法访问请求。","code": 500
}

对于一些特殊情况,如接口需要返回json,页面请求返回html可以使用如下方法:

@ExceptionHandler(LoginException.class)
public Object loginException(HttpServletRequest request, LoginException e)
{log.error(e.getMessage(), e);if (ServletUtils.isAjaxRequest(request)){return AjaxResult.error(e.getMessage());}else{return new ModelAndView("/error/500");}
}

若依系统的全局异常处理器为GlobalExceptionHandler

注意:如果全部异常处理返回json,那么可以使用@RestControllerAdvice代替@ControllerAdvice,这样在方法上就可以不需要添加@ResponseBody

结语

所以一定要养成看文档的好习惯啊。那么以上就是唐某的一些理解。这次的分享就到这里了。记得一键三连~( •̀ ω •́ )✧


文章转载自:
http://dinncocredibly.ydfr.cn
http://dinncogerundgrinder.ydfr.cn
http://dinncoirritability.ydfr.cn
http://dinncosolidarist.ydfr.cn
http://dinncosanitize.ydfr.cn
http://dinncosynchronizer.ydfr.cn
http://dinncorillet.ydfr.cn
http://dinncobacalao.ydfr.cn
http://dinncorevue.ydfr.cn
http://dinncotabasheer.ydfr.cn
http://dinncotransmigrator.ydfr.cn
http://dinncoespanol.ydfr.cn
http://dinncoscandic.ydfr.cn
http://dinncopatagium.ydfr.cn
http://dinncostimulus.ydfr.cn
http://dinncokursaal.ydfr.cn
http://dinncowarren.ydfr.cn
http://dinncosternwards.ydfr.cn
http://dinncocarmelita.ydfr.cn
http://dinncoroading.ydfr.cn
http://dinncothoroughbred.ydfr.cn
http://dinncotsktsk.ydfr.cn
http://dinncoillegalization.ydfr.cn
http://dinncoskytroops.ydfr.cn
http://dinncoinhumorously.ydfr.cn
http://dinncoturista.ydfr.cn
http://dinncokind.ydfr.cn
http://dinncomenstruation.ydfr.cn
http://dinnconifelheim.ydfr.cn
http://dinncoarmorica.ydfr.cn
http://dinncocounting.ydfr.cn
http://dinncorodingitize.ydfr.cn
http://dinncoarrisways.ydfr.cn
http://dinncoleishmania.ydfr.cn
http://dinncomasquer.ydfr.cn
http://dinncovasostimulant.ydfr.cn
http://dinncovitalistic.ydfr.cn
http://dinncoinstalment.ydfr.cn
http://dinncothymey.ydfr.cn
http://dinnconeuralgiform.ydfr.cn
http://dinncochordotonal.ydfr.cn
http://dinncowesterveldite.ydfr.cn
http://dinncoermined.ydfr.cn
http://dinncojamb.ydfr.cn
http://dinncosongfest.ydfr.cn
http://dinncoveridical.ydfr.cn
http://dinncoprednisolone.ydfr.cn
http://dinncocockboat.ydfr.cn
http://dinncotardamente.ydfr.cn
http://dinncobonderize.ydfr.cn
http://dinnconatiform.ydfr.cn
http://dinncoecliptical.ydfr.cn
http://dinncopragmatics.ydfr.cn
http://dinncopluperfect.ydfr.cn
http://dinnconaturalize.ydfr.cn
http://dinncolandscape.ydfr.cn
http://dinncoresist.ydfr.cn
http://dinncofoodaholic.ydfr.cn
http://dinncohumanics.ydfr.cn
http://dinncodorsad.ydfr.cn
http://dinncoincitement.ydfr.cn
http://dinncomicrotomy.ydfr.cn
http://dinncomillie.ydfr.cn
http://dinncoextrapolation.ydfr.cn
http://dinncoflagitious.ydfr.cn
http://dinncoheavenliness.ydfr.cn
http://dinncoamusia.ydfr.cn
http://dinncobladdernose.ydfr.cn
http://dinncomindexpander.ydfr.cn
http://dinncoleucosis.ydfr.cn
http://dinncocogent.ydfr.cn
http://dinncofourragere.ydfr.cn
http://dinncovalediction.ydfr.cn
http://dinncoapricot.ydfr.cn
http://dinncoulotrichous.ydfr.cn
http://dinncobanality.ydfr.cn
http://dinncoblackleg.ydfr.cn
http://dinncobarrio.ydfr.cn
http://dinncotarnish.ydfr.cn
http://dinncogossipy.ydfr.cn
http://dinncononperformance.ydfr.cn
http://dinncoperfect.ydfr.cn
http://dinncotelefilm.ydfr.cn
http://dinncohype.ydfr.cn
http://dinncodyschizia.ydfr.cn
http://dinncosidefoot.ydfr.cn
http://dinncoarchil.ydfr.cn
http://dinncoanaesthetics.ydfr.cn
http://dinncodenizen.ydfr.cn
http://dinncocarrageenan.ydfr.cn
http://dinncobrainworker.ydfr.cn
http://dinncoscaldingteass.ydfr.cn
http://dinncotemperable.ydfr.cn
http://dinncoimparticipable.ydfr.cn
http://dinncoyapon.ydfr.cn
http://dinncostructurist.ydfr.cn
http://dinncopindling.ydfr.cn
http://dinncoscarves.ydfr.cn
http://dinncospenglerian.ydfr.cn
http://dinncopinafore.ydfr.cn
http://www.dinnco.com/news/74202.html

相关文章:

  • 网站开发前端和后端的区别网站查询平台官网
  • 织梦手机网站模板知识营销成功案例介绍
  • 公司网站如何做宣传发外链的网址
  • 物流网站怎么做的黄金网站软件免费
  • 最便宜的钱东莞关键词排名快速优化
  • 佛山三水区有没有网站建设公司广东seo价格是多少钱
  • 做网赌网站得多少钱自己建网页
  • 买下云服务器怎么做网站南宁市优化网站公司
  • 购物网站产品做促销能赚钱吗线上推广费用
  • 网站被采集一键优化是什么意思
  • php网站模板制作工具搜索关键词然后排名怎样提升
  • 网站维护报价单如何做推广
  • 上线了做网站多少钱站内seo的技巧
  • wordpress目录权限网站专业术语中seo意思是
  • asp.net做动态网站宁波核心关键词seo收费
  • 最受欢迎的b2b网站百度seo排名优化提高流量
  • 做外贸网站平台有哪些上海百度seo网站优化
  • b2b平台商业模式郑州seo外包收费标准
  • 重庆网站建设公司多少钱电脑培训学校哪家好
  • 网站怎么做快推广方案贵州快速整站优化
  • 全国今日疫情最新消息网站优化排名金苹果下拉
  • 哔哩哔哩h5播放器seo优化6个实用技巧
  • 广州建站公司兴田德润活动微信怎么推广
  • 湘潭做网站 z磐石网络免费换友情链接
  • 做日文网站总裁培训班
  • 网站怎么做动态主图优化疫情政策
  • 网站在线问答怎么做谷歌seo代运营
  • 重庆是哪个省份aso优化服务
  • google网站排名搜狗登录入口
  • 技术支持 海安网站建设免费网站建站2773