java之异常处理

来源:互联网 发布:sm1算法多少钱 编辑:程序博客网 时间:2024/04/30 07:40

1、异常处理的好处:
1)避免散乱的if-else降低代码可读性,扰乱业务逻辑。
2)将错误封装成对象,统一处理
3)通知使用者错误

2、异常处理体系
Throwable类
—–Error类
—–Exception类
————RunTimeException类
————其他异常类

3、异常分类
1)编译时异常:必须在编译期间进行处理,否则不能通过编译。
2)运行时异常:不要求进行处理,编译也能通过。我们通常不处理运行时异常。

4、异常处理机制
1)声明异常: throws
a、在函数上声明可能出现的异常,可以声明多个异常
b、构造方法也可以声明异常
2)处理异常:try-catch()-finally
a、将可能出现异常的代码置于try块内;
b、在catch块内处理异常。如果处理不了,可以throw抛出异常
c、将必须要执行的代码(如关闭资源)置于finally代码块内。
注:如果try块内某一行代码发生异常,try后面的代码就不会被执行了,转到catch里面执行。如果catch处理成功,那么该方法后面的代码可以正常执行,程序不会停止;如果catch无法处理该异常,可继续抛出异常,让调用这处理。

5、throw和throws
1)throw为手动抛出异常,它编写在函数体里;throws为声明可能出现的异常,它声明在函数名后面。
2)throw抛出的是异常的对象;throws声明的是异常类名。
3)如果代码中出现了throw,必须要在函数名throws异常或try处理。RuntimeException除外。(RuntimeException类及其子类使用throw如果不进行异常处理,那么程序会停掉,而我们希望RuntimeException停掉。其他异常throw后不处理编译不通过)

6、自定义异常
继承RuntimeException或Exception。自定义的异常通常需要手动抛出。构造方法里面传入异常信息调用super()方法即可。

7、异常的覆盖
如果分类声明了异常,子类在重写父类异常的方法时,抛出的异常只能是父类异常的子类或子集。
(可以通过多态来解释:如果父类引用指向子类,在父类引用调用子类的异常方法的时候,父类的异常类必须要大于子类的异常类才可以顺利执行调用。)

8、异常处理的原则
1)声明异常时,应该声明具体的异常而不是笼统的Exception
2)调用声明了异常的方法的时候,声明了多少异常,就应该catch多少个异常。
3)多个catch,父类的catch应该放在下面。

0 0