gpt4 book ai didi

java - IllegalArg 与 null 检查

转载 作者:行者123 更新时间:2023-12-01 14:04:37 25 4
gpt4 key购买 nike

如果我有这样的类(class)

class A
{
Private B b;

X getX()
{
X x = b.newClient().call();
}

}

这里我应该检查 b 是否为 null 吗?这应该如何处理?使用异常(例如,这并不是一个真正的参数,所以在这里抛出非法参数有意义吗?或者只是记录一个错误?

最佳答案

private B b 是隐藏的内部实现的一部分(即,它不是由您的类的客户端使用的公共(public) API 的一部分)。因此,b 为 null 并不是客户的问题,而是作为类开发人员的的问题。

<小时/>

想象一下,如果您尝试使用从 GitHub 上获得的一些 Shiny 的新库:

MagicAnythingParser parser = new MagicAnythingParser();
parser.parse(myDocument);

并且对 parse 的调用引发了一个异常,表示“intakeManifold is null”。你会想“到底是什么?!”

您几乎不知道,您预计首先调用如下电话:

parser.setupParseRules(someRuleset);

在内部,这创建了一些对象并将其分配给intakeManifold

更好的情况是,如果MagicAnythingParser很好地跟踪其内部状态,而不是抛出类似IllegelStateException(“没有应用解析规则。您必须调用setupParseRules”的内容首先。”)

<小时/>

我的全部观点是,您应该开发类的公共(public) API,并考虑到客户(即使该客户是您。)尝试确保您的对象始终处于“良好状态” - 当您不能,抛出有意义的异常,这使得问题是什么非常明显

关于java - IllegalArg 与 null 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19017249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com