如何区分系统抛出的异常和我抛出的业务异常
时间: 2024-02-20 12:56:10 浏览: 21
在Java中,系统抛出的异常是指由Java运行时系统或第三方库引起的异常,这些异常通常是Java的核心API定义的一部分,例如NullPointerException、ArrayIndexOutOfBoundsException等。而业务异常是指由应用程序自己定义的异常,通常是由应用程序中的某些业务逻辑引起的异常。
为了区分系统抛出的异常和业务异常,可以通过异常的类型来区分。通常系统抛出的异常都是Java中已经定义好的异常类型,而业务异常则是应用程序中自定义的异常类型。因此,在捕获异常时,可以根据异常类型来判断是系统抛出的异常还是业务异常。如果捕获到的异常是Java中已经定义好的异常类型,则可以判断为系统抛出的异常;否则则可以判断为业务异常。例如:
```java
try {
// 执行某些操作
} catch (NullPointerException e) {
// 系统抛出的异常
} catch (MyBusinessException e) {
// 应用程序自定义的业务异常
}
```
当然,在实际开发中,为了更好地区分异常,也可以给业务异常定义一个特定的异常码或异常信息,以便在捕获到异常时能够更好地处理异常。
相关问题
filter抛出异常
Filter可以抛出异常,但是需要注意的是,Filter中抛出的异常并不会被@RestControllerAdvice或@ExceptionHandler(Exception.class)等全局异常处理机制捕获和处理。因为Filter的执行策略是在执行Controller之前执行的,所以Filter抛出的异常需要在Filter内部进行处理。在Filter的异常处理方法中,可以使用try-catch块来捕获异常,然后根据业务需求进行处理。<span class="em">1</span><span class="em">2</span>
#### 引用[.reference_title]
- *1* [Filter中抛出异常的处理](https://blog.csdn.net/qq_31854907/article/details/118765509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [JavaWeb中URL重写用Forward方式并使其后filter可以拦截内部转发](https://download.csdn.net/download/yy417168602/10445381)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
feign 抛出异常 throw
当使用Feign进行远程调用时,如果远程服务返回的HTTP状态码不在200-299范围内,Feign会抛出一个`FeignException`异常。这个异常包含了远程服务返回的HTTP状态码、错误信息以及其他相关的信息。
如果你想在客户端抛出自定义的异常而不是`FeignException`,你可以在Feign客户端接口的方法上使用`@ResponseStatus`注解,并指定自定义的异常类。例如:
```java
@FeignClient(name = "exampleService")
public interface ExampleServiceClient {
@GetMapping("/example")
@ResponseStatus(HttpStatus.OK)
void exampleMethod() throws CustomException;
}
```
在这个示例中,如果远程服务返回的HTTP状态码不是200,Feign会抛出`FeignException`,然后Spring MVC会将其转换为`ResponseStatusException`。最终,客户端会捕获到`ResponseStatusException`并将其转换为`CustomException`抛出。
请注意,这里的`CustomException`需要是一个自定义的异常类,你可以根据自己的业务需求来定义它,并确保在客户端和服务端都能够正确处理该异常。