浅谈Java异常01

1:什么是异常

    异常就是Java程序执行之后在执行期遇到的错误,遇到异常时候我们首先要做的是什么,首先我们要做的是看异常的类型以及出现异常的代码块,一般来说,如果是在程序运行时期出现的异常很容易修复,看下异常类型就大概知道在哪里出现的错误

2:我们应该怎么处理异常

    首先我们来说如果不处理异常会发发生什么事情,如果我们任由一个异常发生而不去处理他的时候,默认会直接把异常信息打印出来而不去做任何处理,这样会导致程序各种不可预期的结果。

    我们的Java程序运行的过程中如果出现了异常事件,可以生成一个异常类对象,该异常对象封装了异常的信息,并提交给Java运行时系统。在我理解来,生成异常对象类的过程就是try,捕获到一个异常类,然后catch,catch的意思就是如果捕获到这个异常的时候应该执行的逻辑。

3:小结

    异常是运行期间出现的错误,运行期间出现错误以后JAVA处理这种错误的方式是首先会找相应的catch代码,看看有没有使用catch去捕获异常,如果有catch存在,那么JAVA就会自动跳到catch那里去处理异常,如果没有catch,那么JAVA将会把这个错误抛出去,然后将相关的错误信息打印出来。想用catch捕获异常时必须要写try,没有try就不能用catch,try里面写的是有可能产生异常的语句,catch里面写的是当try里面的语句运行时出现了异常的处理方式。

  方法声明的时候可以指明这个方法有可能会抛出的异常类型,使用throw抛出异常,声明方法后面有throws声明的可能出现的异常一定要去捕获。

所以,从这里,可以了解到Java抛出异常的方式:1.由虚拟机自动进行处理,2用throws子句来抛出异常

4:异常的分类

从大的方面来讲,异常主要分为error错误与Exception异常。两者的共同祖先是Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。

从两者的翻译中来看,一个是错误,一个是异常。所谓错误,就是应用程序中比较严重的问题,大多数与编写者执行的操作没有必要关系。例如,Java所需要执行的内存不够时候,就会报error错误

所谓异常【Exception】,就是程序中可以被预测,可以被修复的问题。

5:针对于Exception异常的分类

    从上文中可以看出,异常分为Exception异常与Error错误。那么细分,Exception异常又可以被分为哪几类?

Exception可以被细分为两类:运行时候异常【非检查异常unchecked exceptions】与非运行时异常[检查了的异常checked exceptions]

运行时候异常:RuntimeException类是Exception类的子类,它叫做运行时异常,Java中的所有运行时异常都会直接或者间接地继承自RuntimeException类。注意:所有的运行时异常都会直接或者间接的继承RuntimeException,Java中凡是继承Exception而不是继承RuntimeException的都是非运行时候的异常,一个try后面可以跟着多个catch,但是最终只有一个catch被执行,所以,catch(Exception e)应该被放在最后一个catch执行

 RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。

处理RuntimeException的原则是:如果出现 RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。其他(IOException等等)checked异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

针对于运行时候异常,是如果一切正常不应该发行的异常,但是的确发生了,这类错误本身就是个bug,需要我们去修复,所以不建议使用try catch。

非运行时候异常:我们必须对其进行处理,否则的话会编译不通过。对运行时候的异常,我们可以对其不进行处理,而且建议也不对其进行处理。对于非运行时候的异常,1.使用try..catch..finally进行捕获,2.在产生异常的方法声明后面写上throws 某一个Exception类型,如throws Exception,将异常抛出到外面一层去。

非运行时候异常:通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如FileNotFoundException, ParseException等。检查了的异常发生在编译阶段,必须要使用try…catch(或者throws)否则编译不通过。

猜你喜欢

转载自blog.csdn.net/weixin_41818715/article/details/79796268