首页 > 编程语言 > 详细

JAVA学习笔记 之 异常

时间:2019-01-30 07:10:59      阅读:188      评论:0      收藏:0      [点我收藏+]

异常的概述

  代码在运行时期发生的问题就称之为异常。在java中,异常被封装成为了一个类,当程序出现了异常类中的问题时,异常的信息(如位置和原因)就会被抛出。

  在java中用Exception来描述异常,public class Exception extends Throwable 则是异常的继承体系。  Throwable是所有错误或异常的超类。

  错误和异常的关系就相当于艾滋和感冒的关系。人得了艾滋几乎不可治愈,而得了感冒却还可以继续正常生活。所以出现错误就意味着代码一定要被修改,而出现异常程序还是可以继续运行下去的。

 

异常的实例

   技术分享图片技术分享图片

  这是很常见的一个数组越界异常,即arr[3]没有索引。整个异常的处理过程如下:①JVM检测到getarray()方法存在数组越界异常,然后将之抛给调用者main()方法。②main()方法发现自己无法处理该异常,于是最后返回给JVM。③JVM将异常的信息 索引“3”和代码位置打印在控制台上。

  在这个过程中,getarray()方法里面的 arr[3]出现异常,于是它后面的 return语句不再执行;main()方法里面的int i=getarray(arr)出现异常,于是后面的打印语句不再执行。

 

异常的处理格式  throw 、 try和catch

     技术分享图片技术分享图片

  在编写程序的时候,我们不能等到控制台告诉你出现了哪些异常,而是要自己提前将可能出现问题给写出来,这就要用到throw关键字。例如对于数组,除了越界,也可能会出现为空的情况。

  这时我们便在方法里面,提前判断,然后用throw关键字创建异常对象,即new Exception(.....),当出现问题的时候,控制台就会将出现的问题,括号中的内容打印出来给我们。

  要注意的是,使用这种异常格式的时候,main方法和被调用的方法都需要thorws Exception。因为方法里面可能抛出多个异常,所以用throws,而创建异常对象的时候,只会有一个,所以用throw。

 

  技术分享图片      技术分享图片

  当运用 了try和catch语句之后,就不需要再让主函数去继承异常。而是用try和catch语句去处理异常。基本的格式是 try {..........}检测括号内语句是否出现异常,catch(异常+ 变量名){........}捕获异常并用变量接收,{......}写处理异常的方法 。

  这里就是用 try 语句检测getarray()方法是否有异常,然后用catch语句捕获异常。因为异常是NullPointerException所以就(NullPointerException ex),即用ex去接收异常,然后处理异常就是将ex打印出来。

 

final{......}    必须要执行的代码

  技术分享图片      技术分享图片

  这个很好理解了,就不多赘述。

 

*运行时异常

  技术分享图片

  当你创建的异常是RuntimeException时,方法不需要再抛出异常,即不需要再写throws Exception,调用者也不需要再去处理。

  原因很简单:运行异常原本就不能发生,但是如果发生了,需要你的程序人员停止程序然后修改源代码。

 

方法重写时异常的处理

   技术分享图片     技术分享图片

 

  当继承父类的方法后,如果父类抛出异常,子类可以抛出异常也可以不抛出异常。但如果子类抛出异常,异常的继承关系不能比父类高。

   如果父类不抛出异常,子类则不能抛出异常。但如果子类调用的方法抛出了异常,这时子类只能选择try和catch。

 

自定义异常

  技术分享图片技术分享图片

  自定义异常大部分都是RuntimeException,因为这些异常是真正使用的时候,不能出现的。

  int...source是可变参的意思,即可以接收多个科目的成绩。

  这里定义了FuShuException,然后(String s)是构造器,super(s)则是将参数s传回去。

 

JAVA学习笔记 之 异常

原文:https://www.cnblogs.com/AbidingAffection/p/10336516.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!