A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 掉了一地.. 中级黑马   /  2015-2-17 09:21  /  765 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

异常:Java运行时期发生的不正常行为。

运行时除了exception还有error
异常:通常发生的错误可以有针对性的处理方式的。
错误:通常发生后不会有针对性的处理方式。
        error的发生往往都是系统级别的问题,都是有jvm所在的系统发生的并反馈给jvm的。无法针对处理,则只能是修改代码。

异常的发生细节:
        主函数收到异常对象。没有处理,main函数就会继续抛出给调用者jvm,jvm收到问题后,就做出了最终的处理方式,将问题对象中的名称,信息,问题的位置,都显示在屏幕上,让软件使用者知道。同时让程序提前终止。

数组越界异常:用非法索引访问数组时抛出的异常,如果索引为负或大于等于数组大小,则该索引为非法索引。

空指针异常:
        当应用程序试图在需要对象的地方使用null时,抛出该异常,这种情况包括:1,调用null对象的实例方法。2,访问或修改null对象的字段。3,将null作为一个数组,获得其长度。4,将null作为一个数组,访问或修改其时间片。5,将空作为throwable值抛出。

throwable类:是Java语言中所有错误或异常的超类,只有当对象是此类(或其子类之一)的实例时,才能通过Java虚拟机或者Java throw语句抛出,类似,只有此类或其子类之一才可以是catch子句中的参数类型。

自定义异常:必须是继承throwable类,或者继承throwable的子类。该对象才可以被throw抛出。可抛性:可以被throw关键字操作。

throw和throws区别:
1,throw用在函数内。throws用在函数上。2,throw抛出的是异常对象,throws用于进行异常类的声明,后面异常类可以有多个,用逗号隔开。

异常-finally的使用:
需求:有一些特定的代码无论是否发生异常都需要执行,因为异常会引发程序的跳转,导致有些语句执行不到,无法满足这个要求。异常捕获处理时Java提供的解决方案:try catch  finally语句,finally就是解决这个问题的,finally中存放的代码无论如何都会执行。
注意:有一种情况发生finally代码也会不执行:system。exit();退出jvm。r

try catch finally组合方式:
1,try catch:对代码进行异常检测,并对检测的异常传递给catch处理。异常捕获处理。
void show()//不用throws
{
        try{
                throw new Exception();
        }catch(Exception e){
        
        }
}

2,try finally:对代码进行异常检测,检测到异常后因为没有catch,所以一样会被默认jvm抛出,异常是没有捕获处理的,但是功能所开启资源需要进行关闭,所有finally。只为关闭资源。
void show()//需要throws
{
        try{
                throw new Exception();
        }finally
        {
        
        }
}
3,try catch finally:检测异常,并传递给catch处理,并定义资源释放。

异常在继承或者实现中的使用细节:*****
        1,子类覆盖父类方法时,如果父类的方法声明异常,子类只能抛出父类异常或者该异常的子类,或者不声明。
        2,当父类方法声明多个异常时,子类覆盖时只能声明多个异常的子集。
        3,当被覆盖的方法没有异常声明时,子类覆盖时无法声明异常的。
                举例:父类存在这种情况,接口也有这种情况,
                问题:接口中没有声明异常,而实现的子类覆盖方法时发生了异常。
                        无法进行throws声明,只能catch的捕获。万一问题处理不了呢?catch中继续throw抛出,但是只能将异常转换成runtime异常的子类抛出。
                Inteface Inter
                {
                        public void show();
                }

                class demo implement Inter
                {
                        public void show(){
                                try{
                                        throw new Exception();        
                                }catch(Exception e)
                                {
                                        code.....
                                        throw new RuntimeException("");//告知调用者问题所在。
                                }
                        }
                }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马