黑马程序员_异常处理.

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

异常:是在运行时期发生的不正常情况。在java中用类的形式对不正常情况h进行描述和封装。描述不正常的情况的类,就称为异常类。实质上异常就是Java通过面向对象的思想将问题封装成了对象,用异常类对其进行描述。比如角标越界。空指针等等。问题很多,意味着描述的类也很多。

Throwable:无论是error 还是异常,发生问题的时候就应该可以抛出,m让调用者知道并处理。

可抛性到底指的是什么呢?怎么体现可抛性呢?

                           其实是通过两个关键字来体现的。

                           throwsthrow ,凡是可以被这两个关键字所操作的类和对象都具备可抛性.


异常的分类:

1.Error --- 一般不可处理的

特点:是由jvm抛出的严重问题。这种问题一般不做针对性处理,直接修改程序。

2Exception  ----- 可以处理的

自定义异常

注意:如果让一个类称为异常类,必须要继承异常体系,因为这样才能具备可抛性。才可以被2个关键字throws和throw处理

1,编译时被检测异常:

只要是Exception和其子类都是,除了特殊子类RuntimeException体系。

                  这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式。

                  这样的问题都可以针对性的处理。

2,编译时不检测异常(运行时异常):

就是Exception中的RuntimeException和其子类。

                  这种问题的发生,无法让功能继续,运算无法进行,更多是因为调用者的原因导致的而或者引            发了内部状态的改变导致的。

                           那么这种问题一般不处理,直接编译通过,在运行时,让调用者调用时的程序强制停止,让                    调用者对代码进行修正。

所以自定义异常时,要么继承Exception

   要么继承RuntimeException

throws throw的区别:

1,            throws使用在函数上。

                        throw使用在函数内。

         2,            throws抛出的是异常类,可以抛出多个,用逗号隔开。

                         throw抛出的是异常对象。

异常处理的捕捉形式:

这是可以对异常进行针对性处理的方式。

具体格式是:

try

{//需要被检测异常的代码。}

catch(异常类变量)//该变量用于接收发生的异常对象

{//处理异常的代码。}

finally

{//一定会被执行的代码。}

异常处理的原则:

1,函数内容如果抛出需要检测的异常:

--那么函数上必须要声明

                  --否则必须在函数内用try catch捕捉,否则编译失败。

2,如果调用到了声明异常的函数:要么try catch要么throws,---》否则编译失败。

3,什么时候catch,什么时候throws呢?

                  功能内容可以解决,用catch。

                  解决不了,用throws告诉调用者,由调用者解决 。

4,一个功能如果抛出了多个异常,那么调用时,必须有对应多个catch进行针对性的处理

                  内部又几个需要检测的异常,就抛几个异常,抛出几个,就catch几个。

5,多个catch,父类的catch放在最下面。

6,catch内,需要定义针对性的处理方式。不要简单的定义printStackTrace,输出语句。也不要不写。

7,当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。

      如果该异常处理不了,但并不属于该功能出现的异常,可以将异常转换后,再抛出和该功能相             关的异常。或者异常可以处理,当需要将异常产生的和本功能相关的问题提供出去,让调用者             知道,并处理。也可以将捕获异常处理后,转换新的异常。

Try{Throw new AException();}

Catch(AException e){

Throw e;}

Try{Throw new AException();}

Catch(AException e){

//AException处理。

Throw new BException();

}//汇款例子

异常的注意事项:

1,  子类在覆盖父类方法时,父类的方法如果抛出了异常,

那么子类的方法只能抛出父类的异常或者该异常的子类。(流程可以看出:对象不一致。)

2,  如果父类抛出多个异常,那么子类只能抛出父类异常的子集。(子类异常少于父类异常)

注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,就只能try.(可以参想上面,无对象)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值