3Java异常处理——1错误处理——4自定义异常(廖雪峰)

1.JDK已有的异常

  • RuntimeException
    • NullPointerException
    • IndexOutOfBoundsException
    • SecurityException
    • IllegalArgumentException
      • NumberFormatException
  • IOException
    • UnsupportedCharsetException,FileNotFoundException,SocketException....
  • ParseException,GeneralSecurityException,SQLException,TimeoutException

异常

当需要抛出异常时:

  • 尽量使用JDK已定义的异常类型
public static void main(String[] args){
    try {
        process1();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

static void process1() {
    throw new IllegalArgumentException();
}
  • 也可以定义新的异常类型
    • 从适合的Exception派生
    • 从RuntimeException派生
public class BadFileFormatException extends IOException {

}

public class UserNotFoundException extends RuntimeException {

}

2.自定义异常

可以定义新的异常关系数:

  • 从适合的Exception派生BaseException
  • 其他Exception从BaseException派生
public class BaseException extends RuntimeException{

}

public class UserNotFoundException extends BaseException{

}

public class LoginFaileException extends BaseException{

}

自定义异常应该提供多个构造方法,这样,抛出异常的时候,就可以选择合适的构造方法。

如果需要将其他异常转换为BaseException,需要将原有的异常传入到BaseException时,这个时候需要一些构造方法,才能接收原始异常信息。

利用Eclipse可以快速生成构造方法

单击右键——source——Generate Constructors from Superclass

public class BaseException extends RuntimeException{
    public BaseException() {
	super();
	// TODO Auto-generated constructor stub
    }

    public BaseException(String message, Throwable cause) {
	super(message, cause);
	// TODO Auto-generated constructor stub
    }

    public BaseException(String message) {
	super(message);
	// TODO Auto-generated constructor stub
    }

    public BaseException(Throwable cause) {
	super(cause);
	// TODO Auto-generated constructor stub
    }
}

3.总结

  • 自定义异常应该从合适的Exception派生
  • 推荐使用RuntimeException
  • 自定义异常应该提供多个构造方法
  • 可以使用IDE根据父类快速创建构造方法

猜你喜欢

转载自blog.csdn.net/qq_24573381/article/details/107719455
今日推荐