异常处理
来源:互联网 发布:网络分销协议 编辑:程序博客网 时间:2024/05/22 15:00
在程序运行时打断正常程序流程的任何不正常的情况称为错误或异常。
一个异常代表一个非正常情况或错误的对象,由程序或运行时环境自动产生,也可以使用throw语句抛出。针对异常可以根据需要进行相应的捕获和处理。错误类似异常,不同之处是错误代表不可恢复的问题并且必须处理。
在程序中使用了异常处理,就可以在解决问题之后使程序继续运行,提高了应用程序的健壮性和容错能力。
java用于异常处理的关键字有5个:try,catch,finally,throw和throws。
在程序中应把可能产生异常的代码包含在一个try程序块中,try程序块后面紧跟着一个或多个catch程序块。每个catch程序块都指定了它所能捕获和处理的异常类型,且都是一个异常处理程序。
在try-catch语句中还可以再包含try-catch语句,构成try-catch的嵌套结构。
如果一个try程序块中没有发生任何异常,那么就跳过该块的异常处理程序,继续执行最后一个catch块之后的代码。如果有finally程序块,就执行finally程序块。
finally程序块中通常都包含一些用于资源释放的代码块。例如,在finally程序块中应将try程序块中打开的所有文件关闭。
异常可以在方法的try程序块中产生,也可以在try程序块中直接或间接调用的方法中产生,在异常处理程序中可以使用异常对象的toString()方法获得异常类名和异常原因字符串,使用printStackTrace()输出调用堆栈跟踪信息。
Error类错误是不可恢复的系统错误,由系统处理。RunTimeException类异常是在程序设计时的大意或粗心引起的,可以通过调试程序解决,程序中一般也不作处理。除此之外的其他异常程序应尽可能处理,以提高程序的健壮性。
在一个方法中产生异常时,有3种处理方式:(1)忽视异常从而引起程序运行终止;(2)在可能抛出异常的地方使用try-catch捕获并处理;(3)在方法说明中使用throws子句声明异常,由调用该方法的上层方法捕获并处理。
Java要求对使用throw语句抛出的异常和使用throws子句声明的异常必须处理,否则会产生编译错误。
程序员可以定义自己的异常类,用来处理用户程序中特定的逻辑运行错误。
try-catch-finally语句的使用举例如下
import java.io.*;
public class CatchException {
public static void main (String args[ ] ) {
int a,b,c;
a=110;
b=0;
try {
c=a/b;
System.out.println(a+"/"+b+"="+c);
}catch(ArithmeticException e) {
System.out.println("出现被0除的异常情况");
}catch(Exception e) {
System.out.println("异常类型为 "+e);
}finally{
System.out.println("除数="+a);
System.out.println("被除数="+b);
}
a=110;
b=10;
try{
c=a/b;
System.out.println(a+"/"+b+"="+c);
}catch (ArithmeticException e) {
System.out.println("出现被0除的异常情况");
}catch (Exception e) {
System.out.println("异常类型为"+e);
}finally{
System.out.println("除数="+a);
System.out.println("被除数="+b);
}
}
}
- 异常处理+异常+处理异常+自定义异常
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 将程序添加到环境变量
- 非递归dfs树
- El表达式
- jsp总结
- http webservice socket的区别
- 异常处理
- SpringAOP编程实例
- 杭电 OJ 1098
- python 38一些图像处理的方法(未完待续)
- this.interrupted()和this.isInterrupted()方法的区别
- 77. Combinations
- SignalR在ASP.NET MVC中的应用
- Thinkphp3.2.3分页锁定搜索条件
- JSTL表达式