JAVA 异常

异常在java中用类的形式对不正常情况进行了描述和封装,将正常流程代码和问题处理代码进行分离,提高阅读行。

 

问题很多,意味着描述的类很多,将其共性进行向上抽取,形成了异常体系。

不正常情况分成了两大类:

Throwable:

|——1、不可处理的:Error。

        特点:比如运行文件不存在,内存溢出,这是错误不是异常。由JVM抛出的严重性问题,一般不处理,直接修改程序。

|——2、可以处理的:Exception。

        特点:可抛通过throws和throw体现,Throwable及其子类都具有可抛型

 

发生异常时,下面的代码不再执行,把问题不断抛给调用者,直到抛到JVM(从栈顶不断往底下抛)。

 

异常的分类:

1、编译时被检测异常:Exception何其子类中都是,除了RuntimeException异常体系。

2、编译时不检测异常(运行时异常):Exception中的RuntimeException和其子类(这种问题发生程序无法运行,更多是调用者的原因导致的或者引发了内部状态的改变,一般不处理,直接编译通过,在运行时让调用者的程序强制停止,让调用者对代码进行修正 )。

所以要么继承Exception(检查),要么继承RuntimeException(不检查)

 

throws和throw的区别:

1、throws使用在函数上,throw在函数内。

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

      throw抛出的是异常对象,一次只能抛一个。

3、throw一般在函数内部看不到,因此得用throws声明。

 

异常处理的捕捉形式:

try {

        需要被检测异常的代码

} catch ( 异常类 变量 ) {

        处理该异常的代码

} finally {

         一定会被单独执行的代码

}

代码放在try块中作用域会变小。当try检测到异常时,不会执行try中下面内容,直接执行catch中内容。

finally:除非关闭JVM,否则一定会执行的代码

三种用法:

1、try-finally:异常无法直接catch处理,但资源在try中开启却需要在finally中关闭

2、try-catch-finally

3、try-catch

异常的转换/封装:将自己熟悉的问题进行处理,并将调用方进行告知(JDBC)。

异常处理的原则:

1、函数如果抛出需要检测的异常,呢么函数必须要声明,否则用try-catch,否则编译失败

2、如果调用了声明异常的函数,要么try-catch要么throws,否则挂掉

3、功能内部可以解决用catch,解决不了用throws给调用者解决

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

      内部有几个要检测的异常,就抛几个,抛几个,就catch几个

 

异常的注意事项:

1、子类覆盖了父类方法时,父类方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类。

2、如果父类抛出多个异常(ABC),子类只能抛子集(ABC、A、B、C、AB、AC、BC)。

3、父类/接口没有抛出异常,子类绝对不能抛出异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值