自定义异常
大型项目时需要自定义异常,需要保持合理的 异常继承体系。
自定义一个 BaseException 作为根异常,然后派生其他异常。
根异常从一个合适的Exception派生,建议RuntimeException派生
public class BaseException extends RuntimeException {
}
继而派生其他异常
public class UserNotFoundException extends BaseException {
}
public class LoginFailedException extends BaseException {
}
...
自定义的BaseException 应该提供多个构造方法,都是照搬RuntimeException的方法
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);
}
}
个人感觉,就是自己定义个名字,然后可以调用,返回一堆东西,就是和原生的原理是一样的,只不过名字和返回的内容可以自己写,有点重载那味儿。(可能理解的有偏差,欢迎评论区指正。)
NullPointerException
逻辑错误,早发现,早处理。
初始化时用 “”避免用null或者默认值,字符串默认为null,容易引发。
java14新增功能,给JVM加参数启动
我并不知道这东西在哪加,有无大佬指点,(狗头)
java -XX:+ShowCodeDetailsInExceptionMessages Main.java
使用断言
assert
例子如下
public static void main(String[] args) {
double x = Math.abs(-123.45);
assert x >= 0;
System.out.println(x);
}
x>=0则ture 反之为false 抛出异常 AssertionError
assert x >= 0 : "x must >= 0";
断言失败附上后边的信息
JVM默认关闭断言,遇到assert忽略,需要在命令行执行
加上 -ea
$ java -ea Main.java
使用JDK Logging
print debug太麻烦,用日志(Logging)取代
使用Commons Logging
第三方库,由Apache创建的日志模块。
第一步,通过LogFactory获取Log类的实例;
第二步,使用Log实例的方法打日志。
需要下载使用点这里,下载
解压之后,把jar和你的java原码放在一个目录下,需要在命令行下执行
javac -cp commons-logging-1.2.jar Main.java
java -cp .;commons-logging-1.2.jar Main
使用Log4j
待续。。。