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 方法包含适当的异常处理代码。
该方法需要两个参数--x 和y 。它声明并初始化一个数组,然后在一个循环中打印每个数组元素除以y 的值。
public class TestExceptions {
你可以把任何可能导致异常的代码行放在try 块中。
例如,如果x 大于数组的大小,或者y 等于0,就会引起异常。
public class TestExceptions {
如果在try 块中发生异常,执行会立即被引导到try 块之后的一系列catch 块,其中包括错误处理代码。
一般来说,你在try 块中为每一种可能被抛出的异常类型包括一个catch 块,尽管如果你愿意,你可以为所有的异常编写一个catch 块。你的目标应该是捕捉和处理特定的异常,而不是一般的异常。
try {
如果一个异常发生了,catch 块会从上到下依次检查。
如果该异常属于catch 块的适当类型,则执行catch 块中的语句,不再检查其他catch 块。所以你定位catch 块的顺序是很重要的。