【JAVA学习】——JAVA中异常及其处理

        首先在了解异常的概念之前,需要了解一下异常和普通问题:对于普通的问题在编译上是语法错误,而相较之异常则是在执行时逻辑产生的错误,往往产生异常。当然这是表面的理解。

        普通问题是指:在当前环境下不能得到足够的信息,比如语法错误,此时错误将会向外传递,而且系统也总能处理这样的错误。 

 

        异常情形:表示是让程序不能继续执行下去的错误,因为在当前环境下无法获得必要的信息来解决问题。你所能做的是从当前环境跳出,并且把问题提交给处理他的程序,这就是抛出异常时所发生的事情。 

        Java异常是Java提供的用于处理程序中错误的一种机制。Java程序的执行过程中如果出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运行时的系统,这个过程称为抛出异常(throw)异常。

        异常分类:J2SDK中定义了很多异常类,这些类对应了各种各样可能出现的异常事件

Error:称为错误,有Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。

Exception:所有异常的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显式的声明或捕捉。

Runtime Exception:一类特殊的异常,如被0除,数组下标超范围等,其产生比较频繁,处理麻烦,如果现实的声明或捕捉将会对程序可读性和运行效率影响很大。因此系统自动检测并将它们交给缺省的异常处理程序(用户可以不必对其进行处理)。

       Java中异常处理机制可以概括为以下几个过程:

      ①在Java程序的执行过程中,如果出现异常,则自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出异常。抛出异常也可以由程序来强制进行。
      ②当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕捉异常。
       ③如果Java运行时系统找不到可以捕获异常的方法,则将终止,相应的Java程序也将退出。
       Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws和finally。
       能够捕捉异常的方法,需要提供相符类型的异常处理器。所捕捉的异常,可能是由于自身语句所引发并抛出的异常,也可能是由某个调用的方法或者Java运行时 系统等抛出的异常。也就是说,一个方法所能捕捉的异常,一定是Java代码在某处所抛出的异常。简单地说,异常总是先被抛出,后被捕捉的。 
       任何Java代码都可以抛出异常,如:自己编写的代码、来自Java开发环境包中代码,或者Java运行时系统。无论是谁,都可以通过Java的throw语句抛出异常。 

JAVA异常捕获处理 
       从方法中抛出的任何异常都必须使用throws子句。

Java通过使用try―catch―finally语句来捕捉一个或多个异常,基本格式为:

try{
        语句
}catch(异常类名1 异常对象名){
        异常处理代码
}catch(异常类名2 异常对象名){
       异常处理代码
}finally{
       语句
}

    try 块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。 
    catch 块:用于处理try捕获到的异常。 
    finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句,finally语句块将在方法返回之前被执行。

 

    在以下4种特殊情况下,finally块不会被执行: 

      1)在finally语句块中发生了未处理异常。 
      2)在前面的代码中用了System.exit()退出程序(JVM多早终止)。 
      3)程序所在的线程死亡。 
      4)关闭CPU。

 

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值