何为异常?
在程序执行过程中由于设计或设备原因导致的程序中断的异常现象叫做异常。
Throwable是所有异常的父类。
object是异常的祖宗类(????)
异常分为:1.运行时异常。(语法没错(编译过程中没错),但运行时出现错误。)
常用的运行时异常:NullPointerException 空指针异常,InputMismatchException 输入不匹配异常, ArrayIndexOutOfBoundsException数组下标越界异常,StringIndexOutOfBoundsException 字符串下标越界异常, IndexOutOfBoundsException 下标越界异常,ClassCastException 类类型转换异常...
2.非运行时异常。(编译过程中出错,虽然可能不执行,但如果不处理,则程序无法运行。)
常用的非运行时异常:FileNotFoundException 文件未找到异常,ClassNotFoundException 类未找到异常、 IOException 流操作异常 ,SqlException 数据库操作异常, ParseException 转换异常...(File classNF io sql)
异常处理方法:
1.try catch finally语句。
1.1 try—catch语句块 ps:try catch是做真正的异常处理。
try{//程序代码}
catch(Exception1 e){//处理 exception1}
catch(Exception2 e){//处理 exception2}
ps:exception异常的意思,所有异常的父类。也是try传递给catch的变量类型,e是变量名,通常有三种方法来进行处理。ps:异常的父类是Throwable,存在两个子类,Error(错误),和exception(异常)。(面试可能会提及)
throwable方法里面常用的成员方法:(写在catch里)
1.e.getmessage();输出错误性质。
2.e.toString () ; 给出异常的类型与性质。
3.e.printStackTrace();指出异常的类型,性质,
2.throws处理异常。ps:本身只是延迟了处理,并非真正处理异常
2.1 throws 语句 : throws 异常类名; ps :注意,throws 是跟在方法的括号后面。
public static void method() throws exception { }
ps:仅仅是将异常抛出去了,如果调用方法后,还想继续执行接下来的语句,则还是需要通过try catch 语句来进行执行。
ps2:如果是编译时异常,就算抛出异常,再调用方法的时候,也依然会产生编译异常,但如果是runtime异常 ,则再调用方法的时候,和runtime异常一样只有运行时会出现错误。
ps3:throws跟着非运行时异常时,写继承方法的子类时,继承方法的throws的非运行异常类型,不能超过,或者不属于父类的throws的非运行时异常,但runtime exception没有限制(可以跟在非运行异常后面继续写)。
3.自定义异常 。
自定义类 extend exception 或者runtime exception;
调用时,throw new 异常类名(自定义的);
throws 和 throw的区别:throws 跟在方法后 跟着的是异常类名,throw 用在方法体内,跟的是异常对象名。
throws 表示抛出异常,由该方法调用者来处理,throw 表示抛出异常,由方法体内的语句处理。
throws 表示出现异常的可能性,并不一定会发生这些异常,执行throw一定抛出了某种异常。