Java try/catch是否占用资源?

Java try/catch是否占用资源?,java,Java,我听说,与其抛出异常并在try/catch块中捕获它们,不如在方法中返回null,因为try/catch是一个消耗资源的操作。这是真的吗?对我来说,try-catch只是一种捕获错误的方法,如果只是因为函数无法运行,我会使用返回值。是的,抛出和捕获异常可能是一种昂贵的操作。只有在异常情况下(很少发生的情况)才会抛出异常。例如,当您可以返回true/false时,在验证某些用户输入时避免引发异常。try/catch消耗的资源很少,但是引发异常的成本相对较高。只有在异常情况下才会抛出异常,如果小心使

我听说,与其抛出异常并在try/catch块中捕获它们,不如在方法中返回null,因为try/catch是一个消耗资源的操作。这是真的吗?

对我来说,try-catch只是一种捕获错误的方法,如果只是因为函数无法运行,我会使用返回值。

是的,抛出和捕获异常可能是一种昂贵的操作。只有在异常情况下(很少发生的情况)才会抛出异常。例如,当您可以返回true/false时,在验证某些用户输入时避免引发异常。

try/catch消耗的资源很少,但是引发异常的成本相对较高。只有在异常情况下才会抛出异常,如果小心使用,则不应成为性能问题。

如果抛出异常,Try/catch只会占用大量资源,否则实际上不会占用任何资源。当它们使程序更干净时使用它们。返回null也可以。这取决于

当手头的条件是异常条件时,您应该抛出异常,异常对象可以用于将信息传递回调用堆栈

如果预期值是一个表示“此处无任何内容”的适当的非异常值,或者是某个等价值,则应该从方法返回
null


对于非异常的“错误”,如果
null
不合适,您通常可以执行不同的操作。

这并不总是正确的,这取决于具体情况。假设您可以在一个方法中得到三种或更多类型的错误。然后,返回单个“null”值不会告诉客户机代码错误类型

此外,简单地从函数返回并不总是您想要在流控制方面做的事情

即使它是真的(在某种程度上),但使用它作为避免一般异常的理由,仍然是另一种(糟糕的)过早优化的情况


例外情况是通信条件可能会在调用堆栈的更高层处理,而不是由直接调用方处理。如果您有这样的条件,您应该使用异常。

正如其他人所指出的,异常在捕获时是昂贵的,但仅在代码中放入try-catch是便宜的(例如,放入循环时除外)

尽管忽略它们是过早优化的标志,因为仅仅返回
null
false
会阻碍控制流,因为代码会变得凌乱


如果(something!=null&&something.exists()&&something.isTrue())代码出现在我的生活中,我看到了大量的
,但它并不漂亮。

你所听到的是真的:抛出并捕获的异常比返回
null
要昂贵。但是,还要考虑维护代码的所有调用方的费用。他们必须检查
null
,如果您想添加更多类型的错误,则必须修改呼叫者


在特殊情况下使用异常。如果一个错误是常见或常见的情况,那么它就不是例外:返回一个状态码。

+1尽管在循环中使用try-catch可能会很昂贵。@Favonius:最好在try-catch中放置一个循环。+1非常正确
即使它是正确的(在某种程度上),它也是另一个错误(不好)在出现过早优化的情况下,将其作为避免一般异常的理由。