Java中Checked Exception和Unchecked Exception有什么区别?
必须要使用try...catch处理异常或throws将其向上抛出,否则编译不通过,比如FileNotFoundException。使用它的好处是可以确保使用者处理这种异常,但是缺点是比较比较繁琐,很多开发者只是catch了异常,并没有做实质处理。
不强制处理或抛出,Unchecked Exception都是继承自RuntimeException,比如NullPointerException。它的好处是可以让代码更加简洁,但是缺点是这种异常容易忘记处理。
推荐在大部分情况下使用Unchecked Exception,但是要在文档或注释中对异常做出说明,这样使用的人可以自己根据情况处理异常,而非强制性处理。
public class ArgumentException extends RuntimeException { ... }
/**
* @throws ArgumentException ...
*/
public void login(String username, String password) {
if (username == null || password == null) {
throw new ArgumentException("Username or Password is null");
}
}
内容