全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 20 道配套习题

全局异常统一处理专题

专题说明

本专题系统讲解SpringMVC异常处理机制,包括局部异常处理、全局异常处理、自定义异常解析器等多种方式。

学习目标

  1. 理解SpringMVC异常处理架构
  2. 掌握@ExceptionHandler局部异常处理
  3. 熟练使用@ControllerAdvice全局异常处理
  4. 掌握自定义HandlerExceptionResolver实现

学习内容

  • 异常处理体系架构
  • @ExceptionHandler注解
  • @ControllerAdvice全局处理
  • HandlerExceptionResolver接口
  • 自定义异常响应格式

学习建议

理解不同异常处理方式的作用范围,结合实际项目选择合适的异常处理策略。

📝 配套习题(20 题)

💡 参考答案在文末
判断题
1

在异常处理方法中返回ResponseEntity对象可以同时设置HTTP状态码和响应体内容。

A

B

2

在项目中可以定义多个自定义异常类,如UserNotFoundException、PermissionDeniedException等,以区分不同的业务异常场景。

A

B

3

当同时配置了局部@ExceptionHandler和全局@ControllerAdvice异常处理时,如果两者都能处理同一异常类型,SpringMVC会优先执行全局异常处理器。

A

B

4

@RestControllerAdvice注解等同于@ControllerAdvice和@ResponseBody的组合,用于RESTful API的全局异常处理。

A

B

单选题
5

Spring Boot默认的错误处理机制中,访问哪个端点可以查看错误详情?

A

/error

B

/exception

C

/errors

D

/api/error

6

以下关于SpringMVC异常处理优先级的描述,哪个是正确的?

A

HandlerExceptionResolver优先于@ControllerAdvice执行

B

@ControllerAdvice优先于局部@ExceptionHandler执行

C

局部@ExceptionHandler优先于@ControllerAdvice执行

D

所有异常处理器并行执行,随机选择

7

在全局异常处理方法中,使用@ResponseBody注解后,返回的错误信息会以什么格式响应给客户端?

A

HTML页面

B

JSON格式

C

XML格式

D

纯文本格式

8

设计统一的JSON错误响应结构时,通常应该包含哪些必要字段?

A

code(错误码)和message(错误信息)

B

data(错误数据)和time(时间戳)

C

status(状态)和body(内容)

D

只有message字段即可

9

以下关于SpringMVC/Spring Boot统一异常处理架构的描述,哪项是最佳实践?

A

所有异常都在Controller方法中使用try-catch捕获处理

B

定义自定义异常类,使用@RestControllerAdvice统一处理所有异常

C

只使用Spring Boot默认的/error端点处理异常

D

所有异常都直接抛出,由Servlet容器处理

10

自定义异常类中定义错误码字段的主要目的是?

A

记录异常发生的行号

B

前端可以根据错误码进行精确的错误提示和逻辑处理

C

方便异常类之间的比较

D

作为异常的唯一标识符

11

在SpringMVC中,以下哪种异常处理方式的作用范围最小?

A

@ExceptionHandler注解方法

B

@ControllerAdvice注解类

C

HandlerExceptionResolver接口实现

D

SimpleMappingExceptionResolver配置

12

SpringMVC默认注册了哪些HandlerExceptionResolver?

A

ExceptionHandlerExceptionResolver

B

ResponseStatusExceptionResolver

C

DefaultHandlerExceptionResolver

D

以上全部

13

Spring Boot 2.x中,当Controller抛出异常时,如果没有被@ExceptionHandler处理,异常会由哪个组件处理?

A

DispatcherServlet直接处理

B

BasicErrorController

C

HandlerExceptionResolver链

D

Tomcat容器

14

设计自定义业务异常类时,通常应该继承哪个类?

A

Exception

B

RuntimeException

C

Throwable

D

Error

多选题
15

在Spring Boot中自定义全局异常处理,可以采用哪些方式?

A

使用@ControllerAdvice和@ExceptionHandler

B

实现ErrorAttributes接口自定义错误属性

C

继承BasicErrorController类自定义错误控制器

D

在application.yml中配置server.error属性

E

实现 ErrorHandler 接口

16

SpringMVC提供的异常处理机制有哪些?

A

使用@ExceptionHandler注解定义局部异常处理方法

B

使用@ControllerAdvice定义全局异常处理类

C

实现HandlerExceptionResolver接口自定义异常解析器

D

配置SimpleMappingExceptionResolver映射异常到视图

E

使用try-catch在Controller方法中手动捕获异常

填空题
17

Spring Boot默认的错误响应JSON包含以下字段:

  1. ____________:错误发生的时间戳
  2. ____________:HTTP状态码
  3. ____________:错误原因描述
  4. message:详细错误信息
  5. path:请求的URL路径

可通过实现ErrorAttributes接口自定义这些字段。

18

使用ResponseEntity返回错误信息时:

  1. 创建____________对象,可以设置HTTP状态码和响应体
  2. 使用____________枚举指定状态码,如HttpStatus.____________表示400错误
  3. 响应体可以是Map或自定义的ErrorResponse对象
19

设计一个自定义业务异常类BusinessException,通常需要包含以下属性:

  1. ____________:错误码,用于前端识别错误类型
  2. ____________:错误信息,用于展示给用户
  3. ____________:附加数据,可选,携带更多上下文信息

该类应继承RuntimeException类,避免强制捕获。

20

在SpringMVC中实现统一异常处理,通常需要:

  1. 定义____________类,继承RuntimeException,包含错误码和错误信息
  2. 使用____________注解创建全局异常处理类
  3. 使用____________注解定义异常处理方法
  4. 使用@ResponseBody注解返回JSON格式的错误信息
参考答案
1.正确 2.正确 3.错误 4.正确 5.A 6.C 7.B 8.A 9.B 10.B 11.A 12.D 13.C 14.B 15.A;B;C;D 16.A;B;C;D;E 17.timestamp;status;error 18.ResponseEntity;HttpStatus;BAD_REQUEST 19.code;message;data 20.自定义异常;@ControllerAdvice;@ExceptionHandler
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 MVC核心源码执行流程专题
下一个专题 → 容器级WEB组件扩展专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码