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

杭州电信网站备案百度下载2022新版安装

杭州电信网站备案,百度下载2022新版安装,考试源码网站wordpress,外贸销售网站建设SpringBoot从入门到精通-第10章 异常处理 一、异常简介 传统的Java程序都是由try-catch语句捕捉异常,而Spring Boot项目采用了全局异常类的概念------所有方法均将异常抛出,并且专门安排一个类统一拦截并处理这些异常。这样做的好处是可以把异常处理的…

SpringBoot从入门到精通-第10章 异常处理

一、异常简介

传统的Java程序都是由try-catch语句捕捉异常,而Spring Boot项目采用了全局异常类的概念------所有方法均将异常抛出,并且专门安排一个类统一拦截并处理这些异常。这样做的好处是可以把异常处理的代码单独存储在一个全局异常处理类中。如果未来需要修改异常处理方案,就可以直接在这个全局异常处理类中进行修改。

二、拦截特定异常

为了拦截异常,Spring Boot提供了两个注解,即@ControllerAdvice和@ExceptionHandler()注解。

  • 其中@ControllerAdvice注解用于标注类,把被@ControllerAdvice注解标注的类称为全局异常处理类;
  • @ExceptionHandler()注解用于标注方法,把被@ExceptionHandler()注解标注的方法用于处理特定异常。
  • 使用@ControllerAdvice注解和@ExceptionHandler()注解拦截特定异常的语法如下:
@ControllerAdvice
public class TestContro { @ExceptionHandler(被拦截的异常类)public String exce(){}
}

2.1、先创建一个简单的springboot项目
在这里插入图片描述
在这里插入图片描述
编写控制器类TestContro:

package com.example._2025614spring_exception.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class TestContro {@RequestMapping("/exception")public String exce(){System.out.println("exce fun");return "exce_fun";}
}

在这里插入图片描述

2.2、准备创建正常数组访问的代码

package com.example._2025614spring_exception.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;@RestController
public class TestContro {@RequestMapping("/exception")public String exce(){ArrayList<String> list = new ArrayList<>();list.add("aa");list.add("bb");list.add("cc");System.out.println("list[2]"+list.get(2));System.out.println("exce fun");return "exce_fun";}
}

启动后访问,控制台输出:
在这里插入图片描述

2.3、准备创建让数组访问超出边界的代码

package com.example._2025614spring_exception.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;@RestController
public class TestContro {@RequestMapping("/exception")public String exce(){ArrayList<String> list = new ArrayList<>();list.add("aa");list.add("bb");list.add("cc");System.out.println("list[2]"+list.get(2));System.out.println("list[3]"+list.get(3));System.out.println("exce fun");return "exce_fun";}
}

2.4、启动正常,访问http://127.0.0.1:8080/exception
在这里插入图片描述
后台日志:
在这里插入图片描述

2.5、添加异常拦截,这时候启动程序,访问时没有报错打印出来,说明异常被拦截了在这里插入图片描述

package com.example._2025614spring_exception.controller;import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
@ControllerAdvice
//@RestController
public class TestContro {@RequestMapping("/exception")@ExceptionHandler(ArrayIndexOutOfBoundsException.class)public String exce(){ArrayList<String> list = new ArrayList<>();list.add("aa");list.add("bb");list.add("cc");System.out.println("list[2]"+list.get(2));System.out.println("list[3]"+list.get(3));System.out.println("exce fun");return "exce_fun";}}

在这里插入图片描述
在这里插入图片描述

三、打印异常日志

添加异常信息打印

package com.example._2025614spring_exception.controller;import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.lang.reflect.Array;
import java.util.ArrayList;
@ControllerAdvice
@RestController
public class TestContro {@RequestMapping("/exception")@ExceptionHandler(ArrayIndexOutOfBoundsException.class)public String exce(ArrayIndexOutOfBoundsException e){System.out.println("数组下标越界拦截到了,报错信息为:"+e);
//        ArrayList<String> list = new ArrayList<>();
//        list.add("aa");
//        list.add("bb");
//        list.add("cc");
//        System.out.println("list[2]"+list.get(2));
//        System.out.println("list[3]"+list.get(3));int[] arr = new int[]{1,2,3,4};System.out.println("arr[1]"+arr[1]);System.out.println("exce fun");return "exce_fun";}
}

访问:
在这里插入图片描述
在这里插入图片描述

四、缩小拦截异常的范围

4.1、拦截由某个或多个包触发的异常

@ControllerAdvice({"包名1", "包名2"})
@ControllerAdvice("包名")

4.2、拦截由某个或多个注解标注的类触发的异常

@ControllerAdvice(annotations={注解1.class, 注解2.class})
@ControllerAdvice(annotations=注解.class)

五、拦截自定义异常

  1. 创建自定义异常类,这个类必须集成RuntimeException运行时异常类,并重写父类的构造方法。
  2. 创建全局异常类,用于拦截自定义的异常。
  3. 创建控制器类,指定自定义异常的触发条件。
http://www.dtcms.com/wzjs/155789.html

相关文章:

  • 现在做外贸还能挣钱吗seo 深圳
  • 高仿服装网站建设小程序商城制作一个需要多少钱
  • 小鼠标网站建设企业网站设计方案
  • 商务网站建设推荐寻找客户的12种方法
  • 网站制作优化推广seo搜索引擎优化内容
  • 做足球原创短视频网站全国31省市疫情最新消息今天
  • div css 网站什么是指数基金
  • 电子商务网站建设设计报告seo优化技术培训中心
  • 上海网站建设品牌网络推广的含义
  • 零基础网站建设教学在哪里如何免费建立一个网站
  • 网站单页支付宝支付怎么做的站长工具传媒
  • 怎么申请建立一个公司网站网络舆情应急预案
  • 广州创意设计公司批量优化网站软件
  • 视频网站做短视频做个小程序需要花多少钱
  • 国外网站建设软件百度移动应用
  • 如何做网站首页的psd图网络建站平台
  • 怎么样做一个网站西安网络优化大的公司
  • 免费b2b网站模板最新百度新闻
  • 宁波设计网站公司哪有免费的网站
  • 建网站要多少钱一台怎样做企业宣传推广
  • wordpress制作官方网站搜索引擎整合营销
  • 网上做涉黄网站怎么判百度帐号登录入口
  • 真如做网站上海网络推广排名公司
  • 网站空格键代码百度seo关键词排名s
  • 网页制作与网站建设宝典 pdf整站排名服务
  • 网站设计 网站推广 网站优化镇江优化推广
  • 宣传型网站建设电商网站设计
  • 怎么做网站电话客服做个公司网站多少钱
  • wordpress 自定义页面模版优化公司排行榜
  • wordpress 如何修改主题宽度网站的seo优化报告