什么是异常?
引用
导致程序中断的一段指令流
有什么危害?
引用
如果不对异常进行正确处理,可能导致程序的中断执行,造成不必要的损失
如何处理异常?及异常的处理机制
引用
try{可能产生异常的代码} catch(异常类 异常对象){异常处理语}可以有多个catch finally{异常统一出口,一定会执行}
异常类
引用
Throwable{Exception 一般表示程序中出现的问题,可以由try...catch处理 Error 可能是Jvm错误,程序无法处理}
Java代码
- public class ExceptionDemo06{
- public
static void main(String args[]){
- System.out.println("********** 计算开始 ***********"
) ;
- int
i = 0 ; // 定义整型变量
- int
j = 0 ; // 定义整型变量
- try
{
- String str1 = args[0
] ; // 接收第一个参数
- String str2 = args[1
] ; // 接收第二个参数
- i = Integer.parseInt(str1) ; // 将第一个参数由字符串变为整型
- j = Integer.parseInt(str2) ; // 将第二个参数由字符串变为整型
- int
temp = i / j ; // 此处产生了异常
- System.out.println("两个数字相除的结果:"
+ temp) ;
- System.out.println("----------------------------"
) ;
- }catch
(ArithmeticException e){ // 捕获算术异常
- // System.out.println("算术异常:" + e) ;
- e.printStackTrace() ;
- }catch
(NumberFormatException e){ // 捕获数字转换异常
- System.out.println("数字转换异常:"
+ e);
- }catch
(ArrayIndexOutOfBoundsException e){ // 捕获数组越界异常
- System.out.println("数组越界异常:"
+ e) ;
- }catch
(Exception e){
- System.out.println("其他异常:"
+ e) ;
- }
- System.out.println("********** 计算结束 ***********"
) ;
- }
- };
注意点:
1. 可以用Exception 捕获所有的异常,但最好分开捕获。且分开捕获要在Exception之前,不然编译为报错。
2. 输出异常信息可以用 System.out.println 也可以用Exception的方法printStackTrace()。
3. 异常时产生一个异常类实例化对象,与catch后面的异常类想匹配,若是同一类型就执行后面的语句,若所有Catch后无匹配,则执行finally.finally中的语句,无论异常是否发生,都会执行