首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以使用此模式进行值检查?

是否可以使用此模式进行值检查?
EN

Stack Overflow用户
提问于 2011-07-03 21:01:22
回答 4查看 138关注 0票数 1

对于具有类似输入检查逻辑的方法的类(例如,具有许多方法的自定义多维数组,所有这些方法都检查给定的坐标是否在数组限制内),我创建了一个单独的私有检查器和一个公共检查器,前者抛出运行时异常,后者只返回一个布尔值,指示变量对于该类方法是否可接受。下面是一个例子:

代码语言:javascript
运行
复制
public class Foo {



    public void doStuff(Variable v) {

        checkVariableUnsafe(v);
        ... // do stuff
    }



    private void checkVariableUnsafe(Variable v) throws InvalidVariableException {...}



    public boolean checkVariable(Variable v) {
        try {
            checkVariableUnsafe(v);
            return true;
        } catch (InvalidVariableException e) {
            return false;
        }
    }
}

是否可以使用它,或者是否有一些我看不到的缺点?在这种情况下,常用的模式是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-03 21:17:59

对于正常的程序流,通常建议避免使用异常。这里不讨论that issue,如果您想遵循这个建议,那么可以将实际执行检查的逻辑放在公共checkVariable方法中,并让私有checkVariableUnsafe方法调用checkVariable并在返回false时抛出异常。

我不认为你的问题中有足够的上下文来明确地评论你所创建的API的适当性,但我看不出它本质上有什么问题。

票数 2
EN

Stack Overflow用户

发布于 2011-07-03 21:09:33

使用相同的代码进行有效性预测和实际验证不仅是一个好主意,而且是唯一正确的想法。既然第一条戒律是“不要重复自己!”,当然你应该把这个检查提取到它自己的方法中。所以这正是我通常做的。

票数 3
EN

Stack Overflow用户

发布于 2011-07-03 21:08:47

这是一个非常好的实践。我只会使用标准的IllegalArgumentException,而不是自定义的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6563023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档