Java 中的try-catch,在上一篇教程中,我们讨论了什么是异常处理以及我们为什么这样做。在本教程中,我们将看到用于异常处理的try-catch
块。
try
块
try
块包含可以发生异常的一组语句。try
块后面总是跟一个catch
块,它处理相关try
块中发生的异常。try
块必须后跟catch
块或finally
块或两者。
try
块的语法
在编写程序时,如果您认为程序中的某些语句可以抛出异常,请将它们包含在
try
块中并处理该异常
catch
块
catch
块是处理异常的地方,此块必须遵循try
块。单个try
块可以有几个与之关联的catch
块。您可以在不同的catch
块中捕获不同的异常。当try
块中发生异常时,将执行处理该特定异常的相应catch
块。例如,如果在try
块中发生算术异常,则执行catch
块中用于算术异常的语句。
java 中try-catch
的语法
示例:try-catch
块
如果try
块中发生异常,则执行控制将传递给相应的catch
块。单个try
块可以有多个与之关联的catch
块,您应该放置catch
块,使得通用异常处理程序catch
块位于最后(参见下面的示例)。
通用异常处理程序可以处理所有异常但是你应该放在最后,如果你把它放在所有catch
块之前,那么它将显示通用消息。您始终希望为每种类型的异常提供有意义的消息,而不是通用消息。
输出:
Java 中的多个catch
块
我们在上面看到的示例是有多个catch
块,让我们在示例的帮助下看到关于多个catch
块的一些规则。
- 如上所述,单个
try
块可以包含任意数量的catch
块。 - 通用
catch
块可以处理所有异常。无论是ArrayIndexOutOfBoundsException
还是ArithmeticException
或NullPointerException
或任何其他类型的异常,它都会处理所有这些异常。
如果你想知道为什么我们需要其他捕获处理程序,当我们有一个可以处理所有的通用。这是因为在通用异常处理程序中,您可以显示消息,但您不确定它可能触发的异常类型,因此它将为所有异常显示相同的消息,并且用户可能无法理解发生了哪个异常。这就是你应该放置的原因是在所有特定异常
catch
块的末尾
- 如果
try
块中没有异常,则完全忽略catch
块。 - 对应的
catch
块执行特定类型的异常:
catch(ArithmeticException e)
是一个可以解决ArithmeticException
的catch
块
catch(NullPointerException e)
是一个可以处理NullPointerException
的catch
块
多个catch
块的示例
输出:
在上面的示例中,有多个catch
块,当try
块中发生异常时,这些catch
块按顺序执行。这意味着如果你把最后一个catch
块(catch(Exception e)
)放在第一个地方,就在try
块之后,那么在任何异常的情况下,这个块将执行,因为它可以处理所有异常。该挡块应放在最后,以避免这种情况。
finally
块
我在这里单独介绍了这个:java finally
块。现在你只需知道这个块执行是否发生异常。您应该将这些语句放在finally
块中,必须执行是否发生异常。