作者:水平蓝精灵天堂_678 | 来源:互联网 | 2023-10-11 02:30
异常和内部类前言一、异常1.异常2.避免异常的两种方式3.异常的基本语法1.使用try..catch处理异常2.使用多个catch块3.使用异常的共同父类Exception来捕获异
异常和内部类
- 前言
- 一、异常
- 1.异常
- 2.避免异常的两种方式
- 3.异常的基本语法
- 1.使用try..catch处理异常
- 2.使用多个catch块
- 3.使用异常的共同父类Exception来捕获异常
- 4.关于异常的错误输出
- 5.关于finally代码块-无论是否产生异常,都会执行的代码块
- 6.关于异常返回值问题
- 7.关于异常的调用链
- 8.JDK新增的自动关闭接口
- 9.一组关键字throws、throw
- 二、内部类
前言
一、异常
运行时抛出的程序错误
编译出错不属于此处所说的异常
1.异常
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/2407e879c3e3a5e6.png)
运行时指的是已经编译通过得到class文件,再由JVM执行过程中出现的错误
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/532f83b02d6405b9.png)
2.避免异常的两种方式
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/02c2c399a7977c9a.png)
3.异常的基本语法
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/8f0a1df0eabeadc3.png)
1.使用try…catch处理异常
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/ca59d492a3dbb281.png)
2.使用多个catch块
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/f9502f8d59a1bab5.png)
3.使用异常的共同父类Exception来捕获异常
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/901fefc9c7898be4.png)
4.关于异常的错误输出
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/689d76e568287836.png)
5.关于finally代码块-无论是否产生异常,都会执行的代码块
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/744dcb02a84ded98.png)
6.关于异常返回值问题
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/de4e6c7b4265e248.png)
7.关于异常的调用链
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/096b5d0115b3fa4c.png)
8.JDK新增的自动关闭接口
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/695f77533a00a336.png)
9.一组关键字throws、throw
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/d8a8fff13c386651.png)
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/2a3deb8913b228b6.png)
package Exception;
import book_management.user.User;
import java.util.Scanner;public class Login {public static final String USER = "WANG";public static final String PASSWORD = "123";public static void main(String[] args) {try {login();System.out.println("登陆成功");}catch (UserNameException e){e.printStackTrace();}catch (PasswordException e){e.printStackTrace();}}public static void login() throws UserNameException{Scanner scanner = new Scanner(System.in);System.out.println("请输入用户名");String name = scanner.next();System.out.println("请输入密码");String password = scanner.next();if (!name.equals(USER)) {throw new UserNameException("用户名错误");}if (!password.equals(PASSWORD)) {throw new PasswordException("密码 错误");}}
}
class UserNameException extends Exception{public UserNameException(String msg){super(msg);}
}
class PasswordException extends RuntimeException{public PasswordException(String msg){super(msg);}
}
二、内部类
内部类:就是将类结构的定义套在另一个类的内部
1.分类
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/b4963a9a2e77d0d0.png)
2.成员内部类
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/dbdcb2d08b1a7afe.png)
3.内部类使用方法\规则
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/fc6dda1cd70a7cf5.png)
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/02ac560d3e004df6.png)
![在这里插入图片描述](https://img0.php1.cn/3cdc5/6e5e/5a0/623e61413b95fdf7.png)