黑马程序员_学习日记一_异常

---------------------- android培训java培训、期待与您交流! ----------------------

异常声明 

    当完成某个函数或者方法并且该方法有可能或产生异常时,就可以利用throws关键字声明此方法有可能会产生异常,告知该方法的调用者进行异常处理,不处理则编译失败,具体用法为:方法名称() throws Exception {}。

    在该方法利用throws关键字声明有可能会抛出异常后,则必须对该异常进行处理,有两种处理方式,如下:

    1.利用try{}catch(){}语句对该异常进行捕捉处理,try{}语句块是尝试执行的代码,如果代码里面产生异常,则该异常会交给catch{}语句去处理。

    2.或者继续在方法调用处继续向下一级利用throws声明抛出(如果不断的向下一级抛异常,则最终会由java虚拟机进行默认处理机制处理该异常)。

    在方法上声明抛出异常的好处:便于提高安全性,让调用者进行处理,不处理则编译失败。

多异常处理

    在方法声明抛出异常的时候,可以进行声明抛出多个异常,但是要注意两点:

    1.最好声明更为具体的异常,这样处理的可以更具体;

    2.方法可以声明抛出多个异常,相应的,方法声明抛出几个异常,就对应有几个catch块,不要定义多余的catch块,如果多个catch块中的异常出现继承关系,则父类异常catch块放在最下面。

    在进行catch块处理的时候,catch中一定要定义具体处理方式, 不要只定义一句简单的e.printStackTrace();也不要简单的就定义一条输出语句。

自定义异常类

    由于项目中可能会出现特有的问题,而这些问题并未被java描述并封装对象,所以对于这些特有的问题,可以按照java的对问题封装思想,将特有的问题,进行自定义异常。自定义异常不被java虚拟机识别,即不会自动抛出,只能手动抛出。

    手动通过throw关键字抛出一个自定义异常,注意:当在方法内部出现了throw抛出异常对象,那么必须要给出相应的异常处理,要么在内部利用try...catch语句捕捉异常,要么在方法上利用throws关键字声明异常抛出,让调用者进行处理,一般情况下,方法内部有throw抛出异常对象,方法上就需要利用throws关键字声明异常抛出。

    那么如何自定义异常呢?

    自定义异常:必须是自定义异常类继承Exception类,因为异常体系有一个特点,即异常类和异常对象都要被抛出,它们都具备可抛性,这个可抛性是throwable这个类中的独有特点,只有这个类中的对象才可以被throws和throw操作,由于父类中已经把异常信息的操作都完成了,所以子类只要在构造时通过super语句将异常传递给父类,就可以通过覆盖父类中的getMessage()方法获取自定义异常信息。用法如下:

    public class 异常类名 extends Exception

{

    异常类名(String msg)     //构造函数

    {

        super(msg);

    }      

}

关键字throws和关键字throw的区别:

    1.throws使用在方法上,而throw使用在方法内部;

    2.throws后面跟的是异常类,而且可以跟多个异常类,(比如throws ArithmeticException,ClassCastException)并且之间用逗号隔开,而throw之后跟的是异常类对象,比如(throw new 自定义异常类();)。

RuntimeException异常

    Exception中有一个特殊的子异常类,即RuntimeException(运行时异常),如果在方法内throw关键字抛出该异常,方法上可以不用throws关键字声明抛出异常,编译仍然可以通过,如果在方法上利用throws关键字声明了抛出该异常,调用者可以不用对该异常进行处理,编译仍然可以通过。

    原因是此类异常不需要让调用者处理,当该异常发生时,虚拟机希望程序停止,在运行时出现了无法继续运行的情况,希望停止程序后由开发人员对代码进行修正。

    自定义异常时,如果希望该异常发生后,程序无法正常继续运行,就让该自定义异常继承RuntimeException类。

    对于异常,分两种:

    1.编译时,被检测的异常,继承Exception类

    2.编译时,不被检测的异常,继承自RuntimeException类

 

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值