在我的Rest服务实现中,我有一个响应作为DTO对象我有一个要求,我希望在出现错误或某些条件不满足时将DTO作为空对象。
下面列出的是jave代码,我想知道是否
public OutputDTO methodName(InputDTO inputDTO){
try {
if(Some condition met){
OutputDTO output = getResultsFromDatabase()
}
else {
OutputDTO outputDTO = new OutputDTO();
outputDTO.setStatus("Error");
outputDTO.setStatusMessage("Condition not met");}
}catch(Exception e){
OutputDTO outputDTO = new OutputDTO();
outputDTO.setStatus("Error");
outputDTO.setStatusMessage(e.toString);}
}
有没有一种方法我不能拥有catch块和else块中的重复代码,我问有没有办法可以将DTO对象设置为null并更加有效地执行此操作。此外,所有DTO都继承自AbstractDTO,其中包含status和statusMessage
答案 0 :(得分:1)
public OutputDTO methodName(InputDTO inputDTO){
OutputDTO outputDTO = new OutputDTO();
outputDTO.setStatus("Error");
try {
if(Some condition met){
OutputDTO output = getResultsFromDatabase();
//if needed you can change the status of outputDTO here
}
else {
outputDTO.setStatusMessage("Condition not met");
}
catch(Exception e){
outputDTO.setStatusMessage(e.toString);
}
}
在条件之外初始化outputDTO
并将其默认状态设置为“Error”。如果您的try块成功,那么您可以根据需要更改outputDTO
的状态。
答案 1 :(得分:1)
如果您希望从数据库获取结果的唯一时间是在满足条件且其他所有时间都创建新对象时打开,那么您可以使用以下内容:
try{
if(...)
OutputDTO output = getResultsFromDatabase()
else
throw new Exception("test");
}
catch(Exception e){
OutputDTO outputDTO = new OutputDTO();
outputDTO.setStatus("Error");
outputDTO.setStatusMessage(e.toString);
}
答案 2 :(得分:0)
在else
部分,抛出异常:
else {
throw new Exception("Condition not met")
}
或者您可以使用finally
阻止。