异常

1.异常处理是面向对象语言区别于面向过程语言的重要标志。

Throwable是所有异常的父类:子类分为可处理异常Exception和不可处理异常Error


2.try{可能出现异常的代码}catch(Exception e){出现异常时执行的代码(如果这里的代码出现异常,会向上抛)}finally{不管异常是否出现,一定会执行这段代码}


3.java虚拟机中有一个机制:异常处理机制,在程序运行时会自动捕获异常,然后创建对象向上抛给调用它的方法,如果不解决,则一直向上抛,直到JVM时,程序会停止运行。


4.try中有多行代码,如果某一行出现异常时,后面的代码都不执行了。


5.异常的方法: getMessage():返回异常信息

 toString():返回 异常名称:异常信息

 printStackTrace():输出 异常名称:异常信息,异常出现的位置。(JVM默认是调用printStackTrace()来处理,输出异常堆栈的跟踪信息.)

		public void printStackTrace(PrintStream s):可以使用这个方法输出到日志中。
6.对多异常的处理:1.声明异常时,建议声明具体(细)的异常,这样可以处理的更具体。
		  2.对方声明几个异常,就应对应几个catch块,不要定义多余的catch块,如果多个catch块中的异常存在继承关系,则父类异常放在子类异常下面(这样才可以编译通过)。
 
7.自定义异常:用户自定义的异常,jvm是不会自动抛出的,必须手动抛出异常。
		1.因为项目中会出现问题,而这些问题java又没有描述,这时就需要自己对这个问题进行描述,利用java面向对象的思想,将问题进行抽象封装。
		2.自定义异常必须继承Exception类或其子类
		3.定义子类的异常信息:在父类中已经把异常信息的操作完成了,子类只需要在构造函数中通过super(子类异常信息)传递给父类,那么就可以通过getMessage()来获取异常信息。

8.当函数内部出现throw抛出异常时,那么必须给予对象的处理,try或声明这个异常。

9.throws和throw的区别:
		1.throws使用在函数上,是声明异常,throw使用在函数内。
		2.throws后面跟的是异常类(如有多个,用,隔开),throw后面跟的是异常对象。

10.Exception中有一个特殊的子类异常RuntimeException运行时异常,如果在函数内抛出该异常,函数上可以不声明异常,编译一样通过,之所以不用声明异常,是希望当该异常发生时,程序停止运行。


11.自定义异常:如果希望该异常发生时程序停止运行,则继承RuntimeException.


12.对于可以处理异常分两种:1.编译时异常,2运行时异常(编译时不被检测的异常)


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

1.子类覆盖父类时,如果父类的方法抛出异常,则子类覆盖该方法时,只能抛出该异常或该异常的子类,不能抛出其他异常,当然也可以不抛出异常。

2.如果父类抛出多个异常时,那么子类在覆盖方法时,只能抛出父类异常的子集。

3.如果父类或接口中没有抛出异常,那么子类在覆盖时也不可以抛出异常,只能进行try处理。


14.java的异常体系在java.lang包中(IOException除外)。


15.总结:

1.try语句不能单独存在,可以和catch finally组成三种结构。

2.catch语句可以有一个或多个,但finally只能有一个。

3.try catch  finally 三个代码块中的变量的作用域相互独立,不能互相访问,如果想变量在三个代码块中都能使用,则可以将该变量定义在外面。

4.多个catch块,jvm只会按顺序匹配其中的一个。

5.throw语句后不能跟其他语句,因为永远不会执行,编译会不通过。

6.如果一个方法调用了另外一个声明抛出异常的方法,则只能try处理或向上抛。

7.子类不能比父类抛出更多的异常。


16.自定义异常也要规范书写,自定义异常名后加Exception,便于阅读。


17.finally代码块一般执行必须要的操作,如释放资源。


18.finally代码块也不是一定执行:1.只有一种情况,如果jvm提前退出了,则不会执行(System.exit(0)就会退出)。

        2.return都不能停止finally代码块的执行






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值