玩命加载中 . . .

自定义异常(25)


自定义异常

自定义异常通常继承于 Exception或 RuntimeException,到底继承那个应该看具体情况来定。

异常处理继承图

  1. 编译时异常,直接继承 Exception。

    (Exception)编译时异常:

    • 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题—-程序试图打开一个并不存在的远程Socket端口。
    • 这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。
    • Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
  2. 运行时异常,直接继承 RuntimeException。

(RuntimeException)运行时异常:

  • 这意味着程序存在bug,如数组越界,0被除,入参不满足规范…..这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。

实例代码:

public class ErrorTest05 {
    // 顾客相关的业务
    public void register(String name) throws IllegalNameException  {
        // 完成注册
        if (name.length() < 6) {
            // 创建异常对象
            IllegalNameException e = new IllegalNameException("用户名位数不能少于7位");

            // 手动抛出异常对象
            throw new IllegalNameException("用户名位数不能少于7位");
//            throw new IllegalNameException("用户名位数不能少于7位");
        }
        // 代码如果执行到这里,则用户名是合法的
        System.out.println("注册成功!!");
    }

}
class ErrorTest05Test {
    public static void main(String[] args) {
        // 模拟注册
        // 假如用户提供用户名如下
        String userName = "jack";
        // 注册
        ErrorTest05 s = new ErrorTest05();
        try {
            s.register(userName);
        }catch (IllegalNameException e) {
            e.printStackTrace();
        }
    }
}
class IllegalNameException extends Exception { // 编译时异常
//class IllegalNameException extends RuntimeException { // 运行时异常
    // 定义异常一般提供两个构造方法
    public IllegalNameException() {
    }
    public IllegalNameException(String msg) {
        super(msg);
    }
}

文章作者: 小靳同学
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小靳同学 !
评论
  目录