9.异常体系

来源:互联网 发布:做班徽的软件 编辑:程序博客网 时间:2024/06/15 21:10

Java.lang.Throwable

                   |----Exception:程序可以处理的异常

                   |----Error:与虚拟机相关问题,系统崩溃,虚拟机问题,内存不足,内存堆栈溢出……建议程序停止。

 

异常:程序在运行时出现不正常情况,java对不正常情况进行描述后的对象体现。

-------------------------------------------------

常见的处理方法

   |---String getMessage();

          |---String toString()

          |---void printStackTrace();

(jvm默认的异常处理机制其实就是调用printStackTrace());

-------------------------------------------------

 

异常的处理:

try { …}

catch(异常类 变量 ) { //处理几个异常就声明几个catch

多个catch块中的异常出现继承关系时,父类catch块要放在子类catch下面

finally{ …}//非必须,但声明后一定会执行,一般用于释放资源

Eg:数据库异常时无法关闭数据库,可使用finally,对资源的关闭


例外:System.exit(0)系统退出,jvm结束,finally不执行。

------------------------------------------------


异常的声明(throws

编写Demo时,代码可能发生异常

通过throws声明功能可能会出现的异常:

Eg:  int div(int a ,int b)throws Exception{

                             Return a/b;//我们知道b=0时会抛出ArithmeticException;

public static voidmain(String [] args){

try{ …} catch(Exception e){ …}

}

 

catch 处理时,最好要有具体的处理形式,例如异常日志文件等)

-------------------------------------

自定义异常:

项目中会出现持有的问题,而这些问题并未被java所描述并封装对象时,可将这些问题进行自定义的异常封装(自定义类继承异常类)

 

继承异常的原因:

因为异常类和异常对象都被抛出,他们都具备可抛性,这个可抛性是Throwable体系特点,只有这个体系中的类和对象才可以被throws和throw操作

------------------------------

 

假设:a/b中,除数如果是负数和0都认为是错的异常描述。

class IException extendsException{

//可重写Exception方法;

//定义构造方法;//与普通类继承基类相似构造;

父类把异常信息操作完成了,子类只要在构造时用super(message)传递信息给父类,即可调用父类方法(getMessage())

class Demo{

          int div(int a,int b)throwsIException{

if(b<=0)

throw new IException();// 函数内throw 异常,在函数上要

                                                  //声明或者在内部处理

return a/b;

}

--------------------

throw和throws的区别:

throws使用在函数上,throw使用在函数内,throws后跟若干个异常类,逗号隔开,throw后跟异常对象。

---------------------------------

 

异常

          |----编译时被检测的异常

          |----编译时不被检测,运行时异常(RuntimeException以及其子类)

RuntimeException:

特点:函数内抛出,函数上可不声明,编译通过(不需要让调用者处理,当异常发生,希望程序停止,希望停止程序后,由程序员对代码进行验证

若在函数上声明,调用者可不处理,编译通过。

心得:如果希望某异常发生时程序停止,就让自定义异常继承RuntimeException

 

-----------------------------------

异常在父类覆盖中的体现:

  1. 1.  子类在覆盖父类时,如果父类的方法抛出异常,那子类的覆盖方法,只能抛出父类的异常或该异常的子类:

class AException extends Exception{

…}

class BException extends AException{

…}

class CException extends Exception{

…}


class Fu {

              voidshow()throws AException{…}

}

Class Zi extends Fu{

              Voidshow()throws AException ,BException{//不能声明CException}

}

(如果子类真发生其他异常,只能try处理,不能抛出)

------------------------------

  1. 2.  如果父类方法抛出多个异常时,那么子类在覆盖方法时,只能抛出父类异常的子集,即父类若抛出AException,BException,则子类可抛出其中之一或两个。

  2. .  如果父类或者接口的方法中无异常抛出,子类在覆盖方法时,不可以抛出异常,只能处理。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2个月大宝宝咳嗽怎么办 宝宝蛋蛋有积液怎么办 宝宝的小鸡小怎么办 婴儿蛋蛋一直红怎么办 婴儿吃母乳拉肚子怎么办 满月宝宝拉水怎么办 小孩子拉肚子拉水怎么办 新生儿小鸡歪的怎么办 新生儿拉屎是水怎么办 婴儿拉屎稀水怎么办 新生儿睡得少怎么办 小孩大便是水怎么办 婴儿大便稀水样怎么办 小孩晚上睡不着觉怎么办 小孩小鸡头红怎么办 儿童睡觉磨牙齿怎么办 幼儿小鸡红肿疼怎么办 宝宝小鸡淹了怎么办 小孩的小鸡肿怎么办 小鸡脚趾歪了怎么办 小鸡脖子歪了怎么办 宝宝的小鸡红怎么办 游戏联不了网络怎么办 光敏印章进水了怎么办 照片打印出来黑怎么办 企业股东签名不符怎么办 电脑签字签不了怎么办 刘海的碎发怎么办 车牌号全是单数怎么办 品正通保车险超市怎么办营业执照 车辆咨询服务门市怎么办营业执照 被互盾科技骗了怎么办 家具生意不好怎么办啊 今年家具店生意不好怎么办 奶茶店位置不好怎么办 早餐店位置不好怎么办 木工做的不好怎么办 淘宝昵称改不了怎么办 淘宝店关门售后怎么办 店里生意不好怎么办?解决方案 淘宝店铺没有生意怎么办