自定义异常
java中不同的异常类,分别表示着某一种具体的异常情况 那么在开发中总是有些异常情况是SUN没有定义好的
此时我们根据自己业务的异常情况来定义异常类 例如年龄负数,考试成绩负数的问题等
在JDK内部定义好的 但是实际开发中也会出现很多异常 这些异常很有可能在JDK中 没有定义过 我们可以自己定义
什么是自定义异常类:
在开发中根据自己业务的异常情况来定义异常类
自定义一个业务逻辑异常:RegisterException 一个注册异常类
异常类如何定义:
1.自定义一个编译器异常:自定义类 并继承于Exception 归属于java.lang
2.自定义一个运行时期的异常类:自定义类并继承于RuntimeException 归属于java.lang
异常类的格式
public class xxxExcepiton extends Exception{ 添加一个空参数的构造方法
添加一个带异常信息的构造方法
}
异常类的注意:
1.自定义异常类一般都是以Exception结尾,说明该类是一个异常类
2.自定义异常类 必须的继承Exception或者RuntimeException
- 继承Exception:那么自定义的异常类就是一个编译器异常 如果方法内部抛出了编译期异常 就必须处理这个异常 要么throws 要么try...catch
- 继承RuntimeException:那么自定义的异常类就是一个运行期异常 无需处理 交给虚拟机处理(中断处理)
代码:
public class RegisterException extends Exception{ public RegisterException(){ super(); } public RegisterException(String message){ super(message); } }
自定义异常的练习
要求:我们模拟注册操作 如果用户名已存在 则抛出异常并提示:亲,该用户名已经被注册
分析:
1.使用数组保存已经注册过的用户名
2.使用Scanner获取用户输入的注册的用户名
3.定义一个方法 对用户输入的中注册的用户名进行判断
- 遍历存储已经注册过用户名的数组 获取每一个用户名
- 使用获取到的用户名和用户输入的用户名比较
- true:用户名已经存在,抛出自己定义异常 并告知用户“亲,该用户名已经被注册”;
- false:继续遍历比较
- 如果循环结束了 还没有找到重复的用户名 提示用户“恭喜您 注册成功!”
代码:
异常类:
public class RegisterException extends Exception{ public RegisterException(){ super(); } public RegisterException(String message){ super(message); } }
测试类:
public class test { static String[] arr={"张三","李四","王五"}; public static void main(String[] args) throws RegisterException { Scanner sc = new Scanner(System.in); System.out.println("请输入您要注册的用户名"); String username = sc.next(); checkUsername(username); } public static void checkUsername(String username) throws RegisterException { for (String name : arr) { if (name.equals(username)){ throw new RegisterException("亲,该用户名已经被注册"); } } System.out.println("恭喜您 注册成功"); } }
标签:用户名,自定义,练习,注册,异常,public,RegisterException From: https://www.cnblogs.com/shenziyi/p/16798179.html