Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回状态消息_Java_Return Value - Fatal编程技术网

Java 返回状态消息

Java 返回状态消息,java,return-value,Java,Return Value,类中有一些方法,如“addSomething()”。这可以是成功的,也可以是不成功的。因此,可以使用布尔返回值显示成功的状态。但是,有时方法调用可能会因为以下几个原因而失败。“false”显示,但仅以一般方式显示。有时程序员想知道失败的原因和原因。为此,提供自己的报表类来提供这样的功能是否有用 public class Report { private final boolean success; private final String message; public

类中有一些方法,如“addSomething()”。这可以是成功的,也可以是不成功的。因此,可以使用布尔返回值显示成功的状态。但是,有时方法调用可能会因为以下几个原因而失败。“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;
    }
}

然后,您可以决定是否要使用“wassucsuccessful()”获取一般成功报告,或者是否还要使用“getMessage()”记录确切原因。

您可以尝试使用类似smth的模式。 它的用法类似于
,在每一时刻,您都会得到一个有效的报告或一个有错误的对象

为此,提供自己的报表类来提供这样的功能是否有用

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;
    }
}
“有用性”是主观的。如果上述方法很好地解决了您的具体问题,那么它当然是有用的,并且可能是一种很好的方法

但一般来说,Java中的失败通常是通过使用某些麦汁的异常来建模的

因此,在许多情况下,您只需使用
void
方法。As:返回的方法表示“一切正常”。否则,如果出现问题,该方法会向您抛出异常

现在,另一方面,如果您遇到一个方法可能通过或失败的情况,并且两种结果都完全正常(例如,如果某个方法检查是否存在可选参数),那么请确定:您的方法可能有用。您只需允许为每个对您重要的方法调用添加新的
Report
对象。然后,调用该方法的任何人都可以创建
Report
对象,并将它们添加到特定于上下文的
ReportCollector

但请注意:我眼中真正的问题是:当您考虑以编程方式收集(并使用)此类“进度”信息时,消息字符串很快就会变成一个问题。人们有时使用数字错误ID有一个很好的理由:以编程方式处理此类情况。字符串只对阅读它们的人有意义


你的代码不能处理很多字符串。记住:执行
contains(“this”)
contains(“that”)
来确定以后如何对错误(消息)做出反应,这是一种真正的反模式

不,在Java中,失败通常是由异常表示的。但问题是异常并没有提供一种简单的方法来以“假或真”的方式处理它们。使用“false”或“true”,您可以构建if-else语句,这比使用异常更容易。您可以编写:If(object.method().wasSuccesful()){doSomething)@JonSkeet One应该区分预期错误和意外/不可控错误。如果错误和处理它们是您业务逻辑的基本部分,请确实使用比异常更复杂的东西使用布尔作为预期成功和失败的返回类型,并为意外失败抛出异常。添加消息ges没有任何价值,或者使用一个好的日志框架,您可以在其中设置每个包/类的日志级别,或者如果您需要的不止是true/false,那么为每个包/类创建并使用枚举this@roookeee:我同意例外情况并不总是正确的解决方案,但没有迹象表明OP处于需要这种情况。如果它们是合理的作为Java新手,我鼓励他们通常对错误使用异常,然后在掌握了基本知识后,了解它们不适合的地方。