JAVA学习笔记 之 异常

异常的概述

代码在运行时期发生的问题就称之为异常。在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 HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

javaAPI_IO流基础_异常

异常1.异常的概述和分类java中的异常有一个超类Throwable,然后其有俩个子类接口Error和Exception,其中Error是严重问题,这一个是程序中无法解决的,而另一个Exception则是一般问题。Exception又可以分为俩个:(1).编译时期异常:不是RuntimeException的异常,这一个是必须

Java中的异常

异常的概述异常就是不正常的意思,Java语言中主要指程序在运行阶段产生的错误Throwable(可抛出、可扔出的)Java.lang.Throwable类是Java程序所有错误或异常的超类主要有两个子类:  Error:主要描述比较严重的错误,无法通过编程来解决的重大的错误  Exception:主要描述比较轻量

03.Android崩溃Crash库之ExceptionHandler分析

目录总结00.异常处理几个常用api01.UncaughtExceptionHandler02.Java线程处理异常分析03.Android中线程处理异常分析04.为何使用setDefaultUncaughtExceptionHandler前沿上一篇整体介绍了crash崩溃

JEE开发异常处理

      在Java开发中,到处可见Exception或者它的子类。如何在一个已有的框架中或者自己的项目中利用好异常,而不让异常漫天飞,需要开发的积累和总结,这篇日志就为这个目的总结几年来的开发对异常使用总结吧。      首先认识Java异常体系结构,Java中使用Throwable作为所有的异常父类,下面有两大子类Error和Excepti

Java 的Throwable、error、exception的区别

1.  什么是异常?异常本质上是程序上的错误,包括程序逻辑错误和系统错误。比如使用空的引用(NullPointerException)、数组下标越界(IndexOutOfBoundsException)、内存溢出错误等。Throwable类是Java语言中所有错误或异常的超类。有两个重要的子类:Exception(异常)和Error(错误),