gpt4 book ai didi

java - 返回 null 和抛出异常有什么区别?

转载 作者:行者123 更新时间:2023-12-02 02:40:45 25 4
gpt4 key购买 nike

@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}

这个方法有一个IBinder作为返回值,但它只是抛出一个异常,我的问题不是关于服务,我的问题是为什么这个方法不显示编译器错误?

如果我们写return null(如果我们不想实现这个方法)或者我们写抛出异常有什么不同?

最佳答案

通常情况下,抛出异常是更好的选择,因为它比返回 null 提供更多信息,而且调用代码不能只是无忧无虑地忽略返回值,从而导致后续出现无信息的 NullPointerException。

但是,the documentation for onBind明确表示可以返回 null。由于 API 就是这样设计的,因此在这种特殊情况下返回 null 比抛出异常更有意义。

一般来说,抛出异常更好,因为它可以防止调用代码认为可以继续操作,就像操作成功一样,而实际上操作并未成功。但在这种情况下,当不支持该操作时,该方法实际上应该返回 null(我认为这不是一个好的设计决策)。

关于java - 返回 null 和抛出异常有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63678869/

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