我已经定义了自定义异常类,后来我在我的其他类中使用它,我将抛出该异常,如下所示
我的自定义例外: -
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");
}
现在如上图所示,我在班上多次进行这项检查,所以我打算保留一个单独的最后一班,我可以保持这个不变,之后我可以在上面的课程中使用相同的常数,请定义我应该选择哪种方法请定义我也可以在这里使用Enum
答案 0 :(得分:0)
不要使用常量并根据数据字段进行思考,而是尝试采用更加面向对象的方法并根据行为进行思考。
您需要某种对象来为您提供某些内容列表,并且在某些情况下它的状态不正确,因此您必须抛出异常来表示这种情况。
这是(为了举例,我发明了一些其他依赖的类型):
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;
}
等等。