s-day05-自定义异常案例
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package com.inmind.custom_exception06;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
在上述代码中,发现这些异常都是JDK内部定义好的,但是实际开发中也会出现很多异常,这些异常很可能在JDK中没有定义过,
|
||||
例如年龄负数问题,考试成绩负数问题.那么能不能自己定义异常呢?
|
||||
|
||||
要求:我们模拟注册操作,如果用户名已存在,则抛出异常并提示:亲,该用户名已经被注册。
|
||||
使用异常来实现,用户名已注册的信息提示业务逻辑
|
||||
*/
|
||||
public class Demo12 {
|
||||
//静态变量表示已经注册过的用户名
|
||||
static String[] usernames = {"jack", "tom", "rose"};
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
//接收用户输入的用户名
|
||||
Scanner sc = new Scanner(System.in);
|
||||
System.out.println("请输入用户名:");
|
||||
String username = sc.nextLine();
|
||||
//判断下该用户名是否可用
|
||||
checkUsername(username);
|
||||
System.out.println("恭喜你,注册成功!");
|
||||
} catch (RegisterException e) {
|
||||
System.out.println(e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.println("程序结束");
|
||||
}
|
||||
//使用自定义的异常,来处理用户名已注册的业务场景
|
||||
private static void checkUsername(String username) {
|
||||
for (String u : usernames) {
|
||||
if (u.equals(username)) {
|
||||
//主动抛出异常
|
||||
throw new RegisterException("亲,该用户名已经被注册");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.inmind.custom_exception06;
|
||||
/*
|
||||
自定义异常:
|
||||
1.编译时异常:提醒代码有语法问题或者声明了某些异常(继承Exception)
|
||||
2.运行时异常:用来处理业务逻辑(继承RuntimeException)
|
||||
*/
|
||||
public class RegisterException extends RuntimeException{
|
||||
//默认无参构造方法
|
||||
public RegisterException(){
|
||||
super();//不写,编译器也会自动加
|
||||
}
|
||||
|
||||
//有参构造方法
|
||||
public RegisterException(String msg){
|
||||
super(msg);//调用父类的构造方法,将msg保存下来
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user