阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

自定义异常

31次阅读
没有评论

共计 1286 个字符,预计需要花费 4 分钟才能阅读完成。

Java 标准库定义的常用异常包括:

Exception
├─ RuntimeException
│  ├─ NullPointerException
│  ├─ IndexOutOfBoundsException
│  ├─ SecurityException
│  └─ IllegalArgumentException
│     └─ NumberFormatException
├─ IOException
│  ├─ UnsupportedCharsetException
│  ├─ FileNotFoundException
│  └─ SocketException
├─ ParseException
├─ GeneralSecurityException
├─ SQLException
└─ TimeoutException

当我们在代码中需要抛出异常时,尽量使用 JDK 已定义的异常类型。例如,参数检查不合法,应该抛出IllegalArgumentException

static void process1(int age) {if (age <= 0) {throw new IllegalArgumentException();}
}

在一个大型项目中,可以自定义新的异常类型,但是,保持一个合理的异常继承体系是非常重要的。

一个常见的做法是自定义一个 BaseException 作为“根异常”,然后,派生出各种业务类型的异常。

BaseException需要从一个适合的 Exception 派生,通常建议从 RuntimeException 派生:

public class BaseException extends RuntimeException {
}

其他业务类型的异常就可以从 BaseException 派生:

public class UserNotFoundException extends BaseException {
}

public class LoginFailedException extends BaseException {
}

...

自定义的 BaseException 应该提供多个构造方法:

public class BaseException extends RuntimeException {public BaseException() {super();}

    public BaseException(String message, Throwable cause) {super(message, cause);
    }

    public BaseException(String message) {super(message);
    }

    public BaseException(Throwable cause) {super(cause);
    }
}

上述构造方法实际上都是原样照抄RuntimeException。这样,抛出异常的时候,就可以选择合适的构造方法。通过 IDE 可以根据父类快速生成子类的构造方法。

练习

请从 BaseException 派生自定义异常。

下载练习

小结

抛出异常时,尽量复用 JDK 已定义的异常类型;

自定义异常体系时,推荐从 RuntimeException 派生“根异常”,再派生出业务异常;

自定义异常时,应该提供多种构造方法。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-08-05发表,共计1286字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中