java异常处理机制
在整个Java的异常处理中,实际上也是按照面向对象的方式进行处理,处理步骤如下:
(1) 一旦产生异常,则首先会产生一个异常类的实例对象。
(2) 在try语句对此异常对象进行捕捉。
(3) 产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码。
Try{
//产生异常代码,并产生异常类的实例对象
}catch(Exception e){
//匹配异常类型
//执行异常处理代码
}finally{
//异常统一出口
}
开发常见问题之一:程序开发中不会只存在一个异常,肯定会同时存在多个异常,此是,就需要使用多个catch语句进行处理,那捕获异常如何排顺?所以要注意,在Java中所有捕获范围小的异常必须放在捕获大的异常之前,否则程序编译时就会出现错误。
代码:
- public class ExceptionDemo{
- 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 result = i /j ; .......................产生异常
- System.out.println("两个数字相除结果:"+result) ;
- }catch(Exception e1){ ..................异常捕获范围大
- System.out.println("其它异常:"+e1.getMessage()) ;
- }catch(ArithmeticException e2){ ................错误,无法捕获
- System.out.println("算术异常:"+e2.getMessage()) ;
- }finally{
- System.out.println("计算结果") ; .............出口,一定执行
- }
- }
- }
引用
结果:编译出错。
引用
开发常见问题之二:throw与throws区别。在定义一个方法时可以使用throws声明,使用throws声明的方法表示此方法不处理异常而交给方法调用处进行处理;而throw则直接抛出异常,两都常在一起使用,throw常用于自定义异常处理。上述为例说明
- public class ExceptionDemo{
- //执行相除
- public int div(int i,int j) throws Exception{.....往上抛,由方法调用处进行处理,这里则由主方法处理
- int result = 0 ;
- try{
- result = i / j ;
- }catch(Exception e){
- throw e; ........直接抛出异常
- }
- return result;
- }
- //主方法
- public static void main(String args[]){
- ExceptionDemo ex = new ExceptionDemo();
- try{
- System.out.println("操作结果:"+ex.div(8,4));
- }catch(Exception e){
- System.out.println(e.getMessage()) ;
- }
- }
- }