自定义异常

自定义异常概述

当java里面的异常无法满足开发者的需求时,可以自定义异常。

package com.jh.exception;

public class UserService {

        //注册的方法        publicvoidregister(String name){

            if(name.length()<6){

                //需要在这里面一个抛出非法注册名的异常,不过java里面没有这个            }

            //如果代码能执行到此处,证明用户名是合法的.            System.out.println("注册成功!");

        }

}


上面是一个用户注册的代码,如果注册的用户名长度小于6,则需要抛出一个非法注册名的异常,不过java里面没有这个异常,这时,开发者可以自定义这个异常来满足需求


如何自定义异常?

可以看下其他Exception里面的源码进行参考。

如果自定义异常是RuntimeException类型的,那就直接继承RuntimeException即可

否则就继承Exception。

继承之后一般提供两个构造方法,如下自定义名为IllegalNameException的异常


package com.jh.exception;

public class IllegalNameExceptionextendsException{ 

//编译时异常//public class IllegalNameException extends RuntimeException{ 

//运行时异常 //定义异常一般提供两个构造方法 publicIllegalNameException(){}

        publicIllegalNameException(String msg){

            super(msg);

        }

    }


使用自定义异常

自定义好异常之后就可以使用了,将上面的代码修改一下:

package com.monkey1024.exception;public classUserService{

        //注册的方法       

 publicvoidregister(String name)throwsIllegalNameException{

            if(name.length()<6){

                //需要在这里面一个抛出非法注册名的异常,不过java里面没有类似的

                 //手动抛出异常

                 //注意是throw不是throws 

                 //使用throw在方法体内抛出异常

throw new IllegalNameException();

            }

            //如果代码能执行到此处,证明用户名是合法的.            

            System.out.println("注册成功!");

        }

}


关于throw,在方法内部出现某种情况,程序不能继续运行,就用throw把异常对象抛出

来写一个测试类

public class RegisterTest{

    publicstaticvoidmain(String[] args){

        //假如用户提供的用户名如下       

        String username = "mk";

        //注册      

      CustomerService cs = new CustomerService();

        try{

            cs.register(username);

        }catch(IllegalNameException e){

            System.out.println(e.getMessage());

        }

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容