Java 异常处理规范
java异常分类异常主要分两类:Error : 一般是指java虚拟机相关的问题,如系统崩溃、虚拟机出错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断,通常应用程序无法处理这些错误,因此应用程序不应该捕获Error对象,也无须在其throws子句中声明该方法抛出任何Error或其子类。Exception:又分为受检异常和运行时异常;受检异常:Java编译器会检查它,也就是说,
·
java异常分类
异常主要分两类:
- Error : 一般是指java虚拟机相关的问题,如系统崩溃、虚拟机出错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断,通常应用程序无法处理这些错误,因此应用程序不应该捕获Error对象,也无须在其throws子句中声明该方法抛出任何Error或其子类。
- Exception: 又分为受检异常和运行时异常;
- 受检异常:Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。
- 运行时异常:这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。不处理的情况下,要不线程中止,要么主程序终止
throw & throws
throw 在方法体内使用,强调动作,一定会抛出异常,throw后面跟对象,或对象的引用;throw后如果有finally,会执行完finally再结束;
throws在函数名或者参数列表后使用,表明可能会抛出的异常;
NullPointerException处理原则
NullPointerException是一种代码逻辑错误,遇到NullPointerException,遵循原则是早暴露,早修复,严禁使用catch来隐藏这种编码错误:
好的编码习惯可以极大地降低NullPointerException的产生,例如:
- 成员变量在定义时初始化:
使用空字符串或空数组,而不是默认的null可避免很多NullPointerException,这样可以使得调用方无需检查结果是否为null。
public class Person {
private String name = "";
}
public String[] readLinesFromFile(String file) {
if (getFileSize(file) == 0) {
// 返回空数组而不是null:
return new String[0];
}
...
}
如果调用方一定要根据null判断,比如返回null表示文件不存在,那么考虑返回Optional:这样调用方必须通过Optional.isPresent()判断是否有结果
public Optional<String> readFromFile(String file) {
if (!fileExist(file)) {
return Optional.empty();
}
...
}
更多推荐
活动日历
查看更多
直播时间 2025-02-26 16:00:00


直播时间 2025-01-08 16:30:00


直播时间 2024-12-11 16:30:00


直播时间 2024-11-27 16:30:00


直播时间 2024-11-21 16:30:00


目录
所有评论(0)