类中有一些方法,例如“addSomething()”。这可以成功也可以不成功。因此,可以使用 boolean 返回值显示成功状态。但有时由于多种原因,方法调用可能会失败。 “false”显示了这一点,但只是以一般方式。有时程序员想知道失败的原因。为此目的,提供一个自己的报告类来提供类似的功能是否有用?
public class Report {
private final boolean success;
private final String message;
public Report(boolean success) {
this.success = success;
this.message = "empty message";
}
public Report(boolean success, String message) {
this(success);
this.message = message;
}
public boolean wasSuccessful() {
return success;
}
public String getMessage() {
return message;
}
}
然后您可以决定是否要使用“wasSuccessful()”获取一般成功报告,或者是否还想使用“getMessage()”记录确切原因。
最佳答案
Is it, for this purpose, useful to provide an own report class that offers functionality like that?
“有用性”是主观的。如果以上内容很好地解决了您的特定问题,那么它当然是有用的,并且可能是一个很好的方法。
但一般来说,Java 中的失败 通常是通过使用某些麦芽汁的异常来建模的。
因此,在许多情况下,您只需使用 void
方法即可。如:刚刚返回的方法意味着:“一切都很好”。否则,如果出现问题,该方法会向您抛出异常。
现在,如果另一方面,您遇到方法可能通过或失败的情况,并且两种结果都完全正确(例如,如果某些方法检查是否存在可选参数),然后确定:您的方法可能会有用。您只需允许为每个对您重要的方法调用添加新的 Report
对象。然后调用该方法的任何人都可以创建 Report
对象并将它们添加到某些特定于上下文的 ReportCollector
。
但请注意:我眼中的真实问题:当您考虑以编程方式收集(和使用)此类“进度”信息时,消息字符串很快就会变成问题。人们有时使用numerical 错误 id 是有充分理由的:以启用对此类情况的编程处理。字符串只对阅读它们的人有意义。
您的代码不能对字符串做太多事情。请记住:执行 contains("this")
或 contains("that")
以确定稍后如何对错误(消息)使用react,这是一个真正的反模式!
关于java - 返回状态消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56903006/