package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping("/arr")
public int arr() {
int[] array = new int[3];
for (int i = 0; i < 4; i++) {
array[i] = i;
}
return 1;
}
}
此处我们直接对 Exception 进行异常统一处理
Exception 是所有异常的父类
java复制代码
package com.example.demo.component;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
@ControllerAdvice
@ResponseBody
public class MyExceptionAdvice {
@ExceptionHandler(Exception.class)
public HashMap<String,Object> doException(Exception e) {
// 自定义异常处理
HashMap<String,Object> result = new HashMap<>();
result.put("code",-2);
result.put("msg","异常类型:" + e);
result.put("data",null);
return result;
}
}
在浏览器中输入对应的 URL,来访问调用 UserController 类中的 arr 方法
成功返回了一个包含错误信息的 JSON 对象,且异常类型为 数组越界异常
实例理解二
此处我们对 Exception ,即所有异常的父类 进行了异常统一处理
此外我们还单独对 NullPointException ,即空指针异常 进行了异常统一处理
java复制代码
package com.example.demo.component;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
@ControllerAdvice
@ResponseBody
public class MyExceptionAdvice {
@ExceptionHandler(Exception.class)
public HashMap<String,Object> doException(Exception e) {
// 自定义异常处理
HashMap<String,Object> result = new HashMap<>();
result.put("code",-2);
result.put("msg","异常类型:" + e);
result.put("data",null);
return result;
}
// 对 空指针异常进行特殊处理
@ExceptionHandler(NullPointerException.class)
public HashMap<String,Object> doNullPointerException(NullPointerException e) {
// 自定义异常处理
HashMap<String,Object> result = new HashMap<>();
result.put("code",-1);
result.put("msg","异常类型:" + e);
result.put("data",null);
return result;
}
}