Java——捕获异常
如果某个异常发生的时候没有在任何地方进行补货,那么程序就会终止,并在控制台上打出异常信息,其中包括异常的类型和堆栈的内容。在捕获异常之后,也会打印出对战信息,但程序将返回到用户界面的处理循环中。
要想捕获一个异常,就必须设置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子句。
- java代码异常,水位异常的捕获
- Java 多线程 捕获线程异常 Java编程思想读书笔记
- java 异常体系以及异常的捕获
- 可能忽略的Java基础知识 - 理解内部类和匿名内部类,异常与异常捕获
- JAVA中的自定义异常捕获
- Java异常捕获 跟踪异常的传播路径
- java面试之异常捕获
- Java 异常的捕获与处理详解(一)
- Java异常捕获之try-catch-finally-return的执行顺序
- java异常的捕获与抛出原则
- java中给出一个子线程如何捕获主线程异常的例子
- Java处理Exception无法捕获的异常
- java/spring scheduler 异常捕获处理
- Java异常捕获之try...catch...finally语句
- JAVA 线程中的异常捕获
- 有关于异常捕获点滴,plus我也揭揭java的短
- java8常用的函数,以及lamda表达式有非运行异常能否在外部捕获
- Java中使用try...catch以及try...catch...finally捕获异常
- java事务异常——Spring事务异常回滚,捕获异常不抛出就不会回滚
- java异常捕获