java - 使用自定义异常并在最终常量中定义它
问题描述
我已经定义了自定义异常类,后来我在我的另一个类中使用它,我抛出该异常,如下所示
我的自定义例外:-
public class AaestroCardNetworkException extends Exception {
public AaestroCardNetworkException(String message) {
super(message);
}
}
在后面的部分我使用它,如下所示
TTTM_DB_LIST = astmDAO.getRTTMDBList(Code, "AE");
if (RTTM_DB_LIST.isEmpty()) {
throw new masterCardNetworkException(" Job code is null in database");
}
现在如上所示,我在课堂上进行了多次检查,所以我打算保留一个单独的最终类,我可以在其中保持这个常量,稍后我可以在上面的类中使用相同的常量,请定义哪种方法我应该选择也请定义我也可以在这里使用枚举吗
解决方案
与其使用常数并从数据领域的角度思考,不如尝试采用更面向对象的方法并从行为的角度思考。
您需要某种对象来为您提供某物的列表,并且在某些情况下它的状态不正确,因此您必须抛出异常来表示这种情况。
在这里(为了举例,我发明了它依赖的一些其他类型):
public interface Rttms {
List<Rttm> rttms() throws AaestroCardNetworkException;
}
现在你需要一个实现,我不知道你如何准确地检索这个列表的内容,但这就是它发生的地方:
public class DbRttms implements Rttms {
private final Database db;
public DbRttms(Database db) {
this.db = db;
}
public List<Rttm> rttms() throws AaestroCardNetworkException {
if (/* can't retrieve list from db */) {
throw new masterCardNetworkException(" Job code is null in database");
} else {
return /* the list */
}
}
}
一旦你有了这个,你可以在你的代码中的某个地方有一个静态常量来保存这个对象,或者你可以传递它,这是你想要的(我建议避免使用静态,但这是另一回事)。
如果您不想每次都检索它,而只是第一次检索它,您可以编写一个缓存其值的此类的实现:
public class CachedRttms implements Rttms {
private final Rttms origin;
private List<Rttm> cached;
public CachedRttms(Rttms origin) {
this.origin = origin;
}
public List<Rttm> rttms() throws AaestroCardNetworkException {
if (this.cached == null) {
this.cached = this.origin.rttms();
}
return this.cached;
}
等等。
推荐阅读
- date - 计算最大和最小日期
- openshift - openshift 3.11 是否支持 ipvs 代理模式?
- java - 如何修复“java.sql.SQLSyntaxErrorException:'字段列表'中的未知列'product0_.return_policy'”异常?
- c# - 为什么某些属性/字段在调试器中可见,但无法从代码中访问?
- window - 使用 nuxtjs “未定义窗口”。尝试使用 generate 构建页面
- angular - 未找到模块错误无法解析角度 7
- r - 设置 ROC 的 y 值
- php - 无法访问 /en/ 子文件夹中的 index.php
- hadoop - 当端口未打开时,是否可以通过 nginx 进行端口转发?
- c - 如何修复 - 使用 getchar() 和 do-while 的意外输出