您的位置:首页 > 编程语言 > Java开发

Java——捕获异常

2019-05-28 14:57 34 查看

如果某个异常发生的时候没有在任何地方进行补货,那么程序就会终止,并在控制台上打出异常信息,其中包括异常的类型和堆栈的内容。在捕获异常之后,也会打印出对战信息,但程序将返回到用户界面的处理循环中。

要想捕获一个异常,就必须设置try/catch模块,最简单的try语句块如下所示:

try
{
code
more code
more code
}
catch(ExcenpitonTyep e)
{
handler for this type
}

如果在try语句块中的任何代码抛出了一个在catch子句中说明的异常类,那么
1、程序将直接跳过try语句中的其余代码。
2、程序将执行catch自居中的处理器代码。

如果在try语句块中的代码没有抛出任何异常,那么程序将跳过catch子句。
如果方法中的任何一个发麻抛出了在catch子句中没有声明的异常类型,那么这个方法将会立刻退出。

下面是一个读取数据的典型程序代码

public void read(String filename) {
try {
InputStream in=new FileInputStream(filename);
int b = 0;
while((b-in.read())!=-1) {

}
}
catch(IOException exception){
exception.printStackTrace();
}
}

try语句中的大部分代码都是很容易理解的:读取并处理字节,并遇到结束符位置。正如在Java Api中所看到的那样,read方法很可能会抛出一个IOException的错我,在这种情况之下,将跳出整个while循环,进入catch子句,并且生成一个栈轨迹。

捕获多个异常

在一个try语句块之中,可以捕获多个异常,并对不同的异常类型做处不同的处理。可以使用try/catch语句。

finally子句

当代码抛出一个异常之后,就会终止方法中剩余代码的处理,并推出这个方法的执行,如果方法获得了一个本地资源,而且只有这个方法自己知道,或者在方法推出直线这些资源没有被回收,那么就势必会产生资源浪费的情况。未解决该情况,使用finally子句。假如有这样一段代码。

InputStream in=new FileInput Stream(…);
try
{

}
catch(IOException)
{

}
finally
{
in.close();
}

在上面这段代码中,有3种情况会执行finally子句。

1、代码没有抛出异常,首先执行try语句块中的所有语句,接着执行finally子句中的代码,随后继续执行try语句块之外的其他语句

2、当程序抛出了一个IOExceptiom(在catch子句中捕获的异常)。顺序如下,程序将执行try语句中的所有语句,直到发生异常为止,此时将跳过try语句块中的剩余代码,转去执行与该异常相匹配的catch语句块中的子句,接着执行finally子句。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: