Java - 如何使用不同的错误消息设置验证

时间:2014-01-24 20:26:35

标签: java exception error-code

我有一个我想要调用的FileUtils类进行一些验证,如果它错了,它需要返回一个好的错误消息,说明验证失败的原因。所以我有:

public static boolean isValidFile(File file) throws Exception
{
    if(something)
        throw new Exception("Something is wrong");
    if(somethingElse)
        throw new Exception("Something else is wrong");
    if(whatever)
        throw new Exception("Whatever is wrong");

    return true;
}

public void anotherMethod()
{
    try
    {
        if(isValidFile(file))
            doSomething();
    } catch (Exception e) {
        displayErrorMessage(e.getMessage());
    }
}

但这对我来说似乎很奇怪,因为isValidFile调用永远不会是假的。此外,如果我反转if条件的顺序,如果它是假的,那么快速启动代码,它甚至更奇怪。另外,我不喜欢将异常处理代码作为传递错误消息的方式。

public void anotherMethod()
{
    try
    {
        if(!isValidFile(file))
            return;
        doSomething();
        ..
        doMoreThings();
    } catch (Exception e) {
        displayErrorMessage(e.getMessage());
    }
}

有没有办法在不使用Exceptions的情况下完成所有这些操作,并且仍然能够让isValidFile()方法返回错误信息的指示,而不返回带有错误代码的int,就像你在C中看到的那样等。

2 个答案:

答案 0 :(得分:2)

你可以,例如将您的方法更改为

public static List<String> isValidFile(File file)

当文件有效时,返回空列表或null
否则返回一个包含验证问题的列表。中 如果验证失败,则返回值是您的指示。

答案 1 :(得分:0)

你可以这样做:

public static String validateFile(File file)
{
    String ret = null;

    if(something) {
        ret = "Something is wrong";
    } else if(somethingElse) {
        ret = "Something else is wrong";
    } else if(whatever) {
        ret ="Whatever is wrong";
    }

    return ret;
}

public void anotherMethod()
{
    String errorMessage = validateFile(file);
    boolean fileIsValid = errorMessage == null;
    if (fileIsValid) {
        doSomething();
    } else {
        displayErrorMessage(errorMessage);
    }
}

不是很漂亮,但它完成了工作。