异常
Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception) 和检查异常(Checked Exception)。
Error与Exception
Error是程序无法处理的错误这些异常发生时, Java虚拟机(JVM)一般会选择线程终止。
Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。 程序中应当尽可能去处理这些异常。运行时异常和非运行时异常
运行时异常也称是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
非运行时异常也称检查异常,从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。
对于非运行时异常(checked exception)必须要对其进行处理,否则无法通过编译。
处理方式有两种:
1.使用try..catch..finally进行捕获;(一个try后面可以跟多个catch,但不管多少个,最多只会有一个catch块被执行。)
2.在产生异常的方法声明后面写上throws某一个Exception类型,如throws Exception,将异常抛出到外面一层去。自定义异常
所谓自定义异常,通常就是定义一个类,去继承Exception类或者它的子类。因为异常必须直接或者间接地继承自Exception类。
通常情况下,会直接继承自Exception类,一般不会继承某个运行时的异常类。
自定义异常可以用于处理用户登录错误,用户输入错误提示等。throws关键字和throw关键字有什么区别和联系
throw用来在方法体内抛出异常,而throws则是方法声明处声明异常。两者有着一定的联系,当一个方法使用throw抛出异常时,要么使用try/catch捕获异常,要么用throws进行声明,否者会出现编译错误。今天学习了异常的类型和异常的处理,了解到了一些常见的异常,如java.lang.nullpointerexception(程序遇上了控制针)、java.lang.arrayindexoutofboundsexception(数组下标越界)等异常。