自定义异常有几种?分别怎么定义?
时间: 2023-06-02 15:03:46 浏览: 46
自定义异常有两种:继承Exception类和继承RuntimeException类。通过继承Exception类创建的自定义异常需要在方法签名中声明并捕获,而继承RuntimeException类创建的自定义异常可以选择在方法签名中声明捕获,也可以不声明,抛出时也不需要强制处理。定义方式为创建一个继承自Exception或RuntimeException类的子类,并在子类中编写特定的构造方法及错误信息。
相关问题
throw能抛出几种异常
在Java中,`throw`语句可以用来抛出异常。可以抛出Java中内置的异常类型,也可以自定义异常类型。
Java中内置的异常类型包括:
1. `ArithmeticException`:算术异常,例如除以0。
2. `ArrayIndexOutOfBoundsException`:数组索引越界异常。
3. `ClassNotFoundException`:找不到类异常。
4. `IllegalArgumentException`:非法参数异常,例如传递了一个不合法的参数。
5. `IllegalStateException`:非法状态异常,例如在不应该调用某个方法的时候调用了该方法。
6. `IndexOutOfBoundsException`:索引越界异常,例如访问一个不存在的元素。
7. `NullPointerException`:空指针异常。
8. `NumberFormatException`:数字格式异常,例如将一个字符串转换为数字时出现错误。
9. `SecurityException`:安全异常,例如试图访问受保护的资源。
10. `StringIndexOutOfBoundsException`:字符串索引越界异常。
除了以上内置异常类型,还可以通过继承`Exception`或`RuntimeException`类来自定义异常类型。自定义异常类型一般用于特定的业务场景,以便更好地描述异常信息。
需要注意的是,`throw`语句只能抛出一个异常,如果需要抛出多个异常,需要使用`throws`关键字或者在`catch`块中继续抛出异常。
Spring Boot如何处理异常?
Spring Boot提供了多种方式来处理异常,以下是其中的几种:
1. 使用@ControllerAdvice和@ExceptionHandler注解来处理全局异常,即处理所有Controller中抛出的异常。
2. 使用@ResponseStatus注解来指定异常的HTTP状态码。
3. 使用@RestControllerAdvice注解来处理RESTful API异常。
4. 使用Spring Boot提供的ErrorController来处理Spring Boot应用程序中的异常。
5. 使用Spring Boot提供的ErrorAttributes来自定义异常处理过程。
6. 使用自定义的异常处理器来处理特定类型的异常。
需要注意的是,处理异常的方式应该根据具体的业务场景和需求来选择,同时需要考虑到异常处理的效率和可维护性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)