【Java】自定义异常

自定义异常:

java提供的异常类,不够我们使用,需要自己定义一些异常类

格式:

       public class XXException extends Exception|RuntimeException{

          添加一个空参数的构造方法

          添加一个带异常信息的构造方法

}

注意:

       1.自定义异常类一般是以Exception结尾,说明该类是一个异常类

        2.自定义异常类,必须继承Exception或者RuntimeException

              继承Exception:那么自定义的异常类就是一个编译期异常,如果出现了编译期异常就必须处理,要么throws ,要么try catch

扫描二维码关注公众号,回复: 15131528 查看本文章

              继承RuntimeException:那么自定义的异常就是一个运行期异常,无需处理,交给虚拟机处理,中断处理。

练习:我们模拟用户操作,如果已经存在该用户就提示错误,如果没有存在就提示成功了

分析:

1.使用数组保存已经注册过的用户名(数据库)

2.使用Scanner获取用户输入的注册的用户名(前端,页面)

3.定义一个方法,对用户输入的用户名进行判断

      遍历已经注册的用户名数组,获取每一个用户名

      使用获取到的用户名和用户输入的用户名比较

      true:

           用户名已经存在,抛出RegisterException异常,告知用户“亲,该用户名已经被注册”

     false:

           继续遍历数组

      如果循环结束了,还没有找到重复的用户名,提示用户“恭喜您,注册成功!”

自定义MyException类

扩展Exception接口,可以自定义输出的语句

package test;


import java.util.Scanner;


public class MyException extends Exception{

//添加一个空参数的构造方法

public MyException() {

super();

}

//添加一个带异常信息的构造方法

//查看源码发现,所有异常类都会有一个带异常信息的构造方法,方法内部调用父类异常信息的构造方法,

//让父类处理

public MyException(String message){

super(message);

}


}


 

package test;


import java.util.Scanner;


public class DemoMyException {

static String[] s = {"张三","李四","王五"};


public static void main(String[] args) throws Exception{

System.out.println("请输入用户名:");

Scanner sc = new Scanner(System.in);

String user = sc.next();

checkName(user);

}


public static void checkName(String username) throws MyException{

for(String name: s){

if(username.equals(name)){

throw new MyException("亲,该用户名已经被注册了!");

}

}

System.out.println("恭喜您,注册成功!");

}

}

这里是Exception编译异常,所以必须要处理,因此在checkName里面会throw抛给原MyException类处理

2.如果是Extends runtimeException 可以不用throw 直接给JVM处理,如下图

猜你喜欢

转载自blog.csdn.net/qq_39696563/article/details/106815798