Java中使用 try、catch 和 finally 块的方法

155 阅读2分钟

Java的异常处理代码被指定在一个try...catch...finally 块中。

try 块包含了可能导致异常发生的代码。 块中的代码被称为保护代码。try

// 基本的try语句语法
try {
// 保护代码
}
catch*(ExceptionType1 Identifier1*) {
// 异常处理代码
}
catch*(ExceptionType2 Identifier2*) {
//异常处理代码
}
finally {
// 0或1 finally条款
}

你可以使用零个或多个catch 块。当存在时,catch 块为抛出的异常类型指定异常处理程序。如果没有抛出异常,那么catch 块中的代码就不会运行,因为它不需要。

如果一个try 块已经有一个相关的catch 块,那么finally 块是可选的。如果你有一个finally 块,它所包含的代码总是执行的,不管是否抛出异常。这条规则的唯一例外是如果发生了System.exit ,在这种情况下,应用程序就会终止而不执行finally 块。

如果一个异常发生在try 块中,并且没有在catch 块中被捕获,那么只要有finally 块,就会执行。然后应用程序就终止了。

如果需要,你必须明确地将异常抛到调用栈上。如果没有方法处理这个异常,当异常对象到达调用堆栈的顶部时,程序就会终止。

考虑一下代码,其中tryValues 方法包含适当的异常处理代码。

该方法需要两个参数--xy 。它声明并初始化一个数组,然后在一个循环中打印每个数组元素除以y 的值。

public class TestExceptions {

你可以把任何可能导致异常的代码行放在try 块中。

例如,如果x 大于数组的大小,或者y 等于0,就会引起异常。

public class TestExceptions {

如果在try 块中发生异常,执行会立即被引导到try 块之后的一系列catch 块,其中包括错误处理代码。

一般来说,你在try 块中为每一种可能被抛出的异常类型包括一个catch 块,尽管如果你愿意,你可以为所有的异常编写一个catch 块。你的目标应该是捕捉和处理特定的异常,而不是一般的异常。

try {

如果一个异常发生了,catch 块会从上到下依次检查。

如果该异常属于catch 块的适当类型,则执行catch 块中的语句,不再检查其他catch 块。所以你定位catch 块的顺序是很重要的。