关于java 异常处理的学习

时间:2022-12-12 20:02:28

首先,基础知识,java的异常的基类为Throwable,它的两个子类为Error和Exception

Error指错误,而Exception就是我们要处理的异常了.

异常又分为运行期异常和编译期异常。


现在我们就讨论对异常的处理。

一.在哪里处理 。throws vs try catch

我们在学习时,有时会看到这两种形式


public void 方法名() throws Exception{};


也会看到在方法体中的这种形式

public void 方法名(){

try{

//代码块

}

catch(Exception e)

{

//处理

}

}

那么这两种形式有什么区别呢?

throws的形式时,如果这个方法在执行的过程中出现了异常,那么方法停止,抛出异常,此时异常的处理是由调用该方法的上一级(如main方法)处理

而try catch则是在方法内部对异常进行处理。所以具体用哪一种,还得看需求。


二.try catch finally的执行顺序,还有在加入return时的顺序

1.finally无论什么情况都会执行,就算try或者catch中有return,也会执行

2.在发生异常后,一般就会跳到下一个(顺序就是try,catch,finally),若finally中也发生异常,则会报错


这是我自己的两点体会,剩下关于return的网上例子很多,就不多说了


三。是不是把代码块全部try catch就行了呢

这几天我在写爬虫程序时,一直在思考这个问题,是不是把全部的代码包裹起来,最后写一个catch,输出错误信息就行了呢?

首先爬虫有很多地方可能出现异常,如请求超时,500错误,提取元素的正则写的不对,格式转化出错等等。这些错误,出现一个就会报错,我们不能用一个catch解决全部的

问题,应当在可能出现的地方做一个局部的try catch,然后在抓取时进行日志记录,这样才知道哪条信息抓取时出错了,而不影响其他信息的抓取。