首先,基础知识,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,然后在抓取时进行日志记录,这样才知道哪条信息抓取时出错了,而不影响其他信息的抓取。