黑马程序员_异常

来源:互联网 发布:龙之信条萝莉捏脸数据 编辑:程序博客网 时间:2024/06/07 12:39

                                                         ----------- android培训java培训、java学习型技术博客、期待与您交流! ---------

一.异常的定义:在运行时期发生的一些不正常情况。就是异常。

二.异常的由来:程序运行时总会一些不正常的情况。java语言对这些不正常情况也进行了描述,并对这些不正常进行了对象的封装。

三.异常体系:异常情况有多种,比如角标越界,空指针等都是。就对这些问题进行分类。而且这些问题都有共性内容比如:每一个问题都有名称,同时还有问题描述的信息,问题出现的位置,所以可以不断的向上抽取。形成了异常体系,就是Exception。 

通过查阅api。发现异常体系是这样的?
Throwable
:可抛出。
|--Error
:严重的问题。一般都是由jvm从底层抛出来的问题。通常不需要处理。直接修改程序即可
|--Exception
:是可以定义针对性的处理方式对该种情况进行处理。
不正常情况分两种,一种是可以解决的Exception,一种是严重性的Error。
无论是Error还是Exception,它们的子类都一个特点:子类名的后缀都是父类名。
这个异常体系最大的特点:就在于该体系中的类和对象都具备
可抛性
可抛性的体现就是无论是类,还是对象都可以被throws或者throw所操作。
throws操作类。throw操作对象。

四.异常的处理方式:

1,声明抛出。告诉调用者功能会有问题。通过throws关键字对问题声明在功能上。
2,进行捕捉。可以使用针对性的捕捉代码块完成。
try 
{
//需要被检测的代码;
}
catch(异常类 变量)//该变量用于接收try检测到的异常对象。
{
//异常处理代码。
}
finally
{
//一定会被执行的代码。
}

 五. throws  throw关键字的区别:

throws用在函数上,用于功能声明异常,后面抛出的是异常类可以抛出多个,只要用逗号隔开即可。

 throw 只能用在函数内,用于抛出异常对象,额外特点,一旦执行,就可以结束功能。

例子:
六.自定义异常:

对于常见的不正常情况,java都有对应的描述,比如角标越界,或者空指针等。对于自定义的程序中的出现的特有问题,java并没有给出对应的描述。这时就需要我们按照面向对象的思想对这个问题进行描述,像异常一样将其封装成对象。
定义的方式:
1,定义一个类,对问题进行描述。
2,必须要让这个类继承异常类,具备可抛性。

七.异常细节:

1,定义功能,功能内部因为传入的参数问题,导致了功能会出现问题。这时为了解决这个问题,通常,我们都会将问题通过throws声明在函数上。
目的:为了调用者在使用这个功能的时候,能明确处理方式。也就是说throws抛出的目的是为了让调用者预先定义好问题的处理方式。
2,如果一个功能抛出多个异常。
那么在调用该功能时,需要有多个catch进行每一个异常的针对性处理。
如果多个catch中有父类异常,一定要定义在最下面。否则编译失败。
3,特殊部分:
函数内throw抛出异常对象,函数上一定要用throws声明。否则编译失败。 
调用到声明异常的函数,要进行throws声明抛出,或者trycatch捕捉,否则,编译失败。 
        注意:异常分两种。
1,编译时被编译器检测的异常。
通常都需要编写针对性的处理代码进行处理。
        2,编译时不被检测的异常。这种异常出现,编译时期是不在检查之列。这种异常称为运行时异常。
也就说函数内throw抛出运行时异常,不需要在函数上声明。即使声明了,调用者也不用一定给出预先处理方式。 因为它不会导致编译失败。 
        通常,不编写针对性的代码进行处理。一旦发生,就让程序停掉。
为了对代码进行修正。
        区分方式:
Exception中一个特殊的子类:RuntimeException就是运行时异常。
RuntimeException和其子类都不需要编译时检测。 
        意味着:我们在自定义异常时,可以继承Exception,称为编译时被检测的异常。
              也可以继承RuntimeException,称为运行时异常。

八.总结:异常的处理方式主要有两种,一种是通过throws关键字对异常进行抛出。另一种方式就是通过try{}  catch{}  finally{} 代码块对异常进行捕捉。像一些自定义程序中出现的一些问题,则需要我们自定义异常来进行处理。

                              ---------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------

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



0 0
原创粉丝点击