Try. Finally. If. Not. Null.

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

在Java7之前的“try/finally”场景中有一个非常典型的错误,在许多代码审查中我都经常看到。我必须写一下关于它。Java7引入了一种解决方案,但它并没有涵盖所有情况。有时我们需要处理非“AutoCloseable”资源。请正确地打开和关闭它们。以下是示例(假设我们使用的是Java 6):

我已经写过关于null及其邪恶本质的文章。现在,它又出现了。如果你只是遵循“永远不要使用NULL”的规则,这段代码将需要立即重构。它的正确版本将如下所示:

现在没有null了,非常简洁,不是吗?

在某些情况下,打开资源本身会抛出IOException,我们不能将其放在try/catch之外。在这种情况下,我们必须有两个try/catch块:

但是绝对不应该有null

在Java代码中出现null是代码质量不佳的明显迹象。如果必须使用null,那么肯定有问题。唯一正当使用null的地方是在使用第三方API或JDK时。它们有时可能返回null,因为… 嗯,它们的设计很糟糕。我们别无选择,只能使用if(x==null)。但就仅限于此。其他地方都不适合使用null

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-17 at 16:00

sixnines availability badge   GitHub stars