异常处理

异常:异常是导致一个程序中断的指令流,一旦出现之后程序就将立即退出。

public class ExpTest{    
    public static void main(String args[]){      
          int x = 10;       
          int y = 0;        
          System.out.println("计算开始:") ;        
          System.out.println("计算结果是:"+(x/y));        
          System.out.println("计算结束!");  
     }
}     

运行结果:

/*计算开始。  
*Exception in thread "main"                  *java.lang.ArithmeticException: 
/ by zero 
*at ExpDemo01.main(ExpDemo01.java:6)  
*/

如果会发生异常的语句发生异常,此时该语句之后的所有语句都不会被执行到,就直接退出程序,如果想要程序继续执行,就需要对异常的语句进行处理。
异常分为编译器异常和运行期异常:
编译期异常:此类异常知名会意,就是在java代码编写完成是预编译的时间,就检出的异常,即不能通过编译,必须对异常的情况进行处理,否则编译就有错误。处理的方式通常为try…catch或者throws进行异常的抛出。其中try…catch对异常情况可以进行实时的捕获并进行处理,将受检的代码放进try块里面,catch会捕获到对应的异常,即执行catch里面的代码。throws放在方法上进行异常的抛出,说明该方法可能进行异常的抛出,但本身并不进行处理或本身没有能力进行处理,把异常的处理的责任交给方法的调用者。
运行期异常:该种异常是编译器检查不出来的,不需要try…catch{} throws就可以顺利编译。常见的运行期异常:空指针异常NullPointerException,除数为零时产生的ArithmeticException异常,数组下标越界时产生的IndexOutOfBoundsExceptionyic异常,fail-fail机制产生的ConcurrentModificationException异常等,都属于运行时异常。该类异常时可以用改写代码逻辑进行避免的,这时候就是检验我们代码的严谨性。Exception处理:空指针异常:如果发生空指针异常,对所在点访问操作进判断。
异常的处理:常用的两种异常处理方式:捕获异常、声明抛出异常。
1、捕获异常:就地解决,并使程序继续执行。
使用try…catch(){}捕捉异常 //try块放异常的代码
catch捕捉异常
finally{}块:try…catch(){}finally() 不管try是否异常,finally块都会被执行,除非退出当前程序。
如果会发现异常的语句发生异常,此时该语句(在try块)之后的所有语句都不会被执行到。
try{ 可能出现异常的语句;
}catch(异常类型 异常对象){
处理异常;
}
catch(异常类型 异常对象){
处理异常;
}…
finally{ 异常处理的统一出口;

//不管是否有异常,都执行此finally语句!
}
2、声明抛出异常:也就是将异常向外转移,即将异常抛出方法之外,由调用该方法的环境去处理。一个方法不处理它产生的异常,而是沿着调用层次向上传递,由调用它的方法来处理这些异常,叫声明抛出异常(throws)

声明抛出异常是一种消极的异常处理机制。
throws:抛出异常类型(自己不处理,谁用谁处理)
throws关键字主要是用在方法的声明上,表示一个方法不处理异常,而交给被调用处进行处理。在主方法上使用的话就表示一旦出现了异常之后,继续向上抛,表示由JVM进行处理了。实际上默认情况下的所有异常都是依靠JVM进行处理的。
Throw:抛出异常对象throw关键字是在程序中"人为的抛出"一个异常对象
throw new Exception(“人为抛出的!”) ;

public class ExpTest01{    
    public static void main(String args[]) {        
    try{            
         throw new Exception("人为抛出的!") ;        
         }catch(Exception e){            
              e.printStackTrace() ;        
          }    
    }
}

Object:所有类默认继承于object
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值