捕获具体异常和捕获异常超类Exception两种情况
假如你知道可能会抛出FileNotFoundException异常我们知道捕获异常语句可以用(1)笼统捕获超类异常方式catch(Exceptione){e.printS...
假如你知道可能会抛出FileNotFoundException异常
我们知道捕获异常语句可以用(1)笼统捕获超类异常方式
catch(Exception e){
e.printStackTrace();
}
或者用(2)捕获具体异常方式
catch(FileNotFoundException fnfE){
fnfE.printStackTrace();
}
都可以捕获到这个FileNotFoundException异常,那么请问,笼统捕获超类异常和捕获具体异常应该首选推荐用哪一个呢?当然书上也建议先把具体捕获异常写在前面,捕获超类Exception写在最后的方式。
但我想知道是否有这样的情况:什么时候用第一种方式优于第二种方式,什么时候用第二种方式又优于第一种方式呢?有这样的情况吗?
或者可以说看情况而定,那确切是到底什么时候建议使用笼统捕获超类异常,而什么时候建议使用捕获具体异常呢?
可以举个例子给我吗?谢谢,因为自己一般写程序时老为图方便就直接使用第一种笼统捕获超类异常的方式。
谢谢三位,如果能把分平分给三位就好了,但好像百度不支持......那就投票吧! 展开
我们知道捕获异常语句可以用(1)笼统捕获超类异常方式
catch(Exception e){
e.printStackTrace();
}
或者用(2)捕获具体异常方式
catch(FileNotFoundException fnfE){
fnfE.printStackTrace();
}
都可以捕获到这个FileNotFoundException异常,那么请问,笼统捕获超类异常和捕获具体异常应该首选推荐用哪一个呢?当然书上也建议先把具体捕获异常写在前面,捕获超类Exception写在最后的方式。
但我想知道是否有这样的情况:什么时候用第一种方式优于第二种方式,什么时候用第二种方式又优于第一种方式呢?有这样的情况吗?
或者可以说看情况而定,那确切是到底什么时候建议使用笼统捕获超类异常,而什么时候建议使用捕获具体异常呢?
可以举个例子给我吗?谢谢,因为自己一般写程序时老为图方便就直接使用第一种笼统捕获超类异常的方式。
谢谢三位,如果能把分平分给三位就好了,但好像百度不支持......那就投票吧! 展开
展开全部
我接这他们的说
之所以捕捉FileNotFoundException 异常
是因为你的业务需要FileNotFoundException
可能发生这个异常 而不是发生其他异常
虽然都是继承Exception 但是这样分类会好一点
以后如果参加工作了你也可能会自定义一些异常
如DAOException之类的 只不过更好的区分错误
加以修改
之所以捕捉FileNotFoundException 异常
是因为你的业务需要FileNotFoundException
可能发生这个异常 而不是发生其他异常
虽然都是继承Exception 但是这样分类会好一点
以后如果参加工作了你也可能会自定义一些异常
如DAOException之类的 只不过更好的区分错误
加以修改
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
接着1楼的往下说。
比如在找不到想要的文件时,我想提醒用户确认文件名是否正确,这之外的异常我都不关心。这时就需要先捕获具体异常(FileNotFoundException),再捕获Exception。否则,可能就根本分不清捕获的异常是不是FileNotFoundException了。
比如在找不到想要的文件时,我想提醒用户确认文件名是否正确,这之外的异常我都不关心。这时就需要先捕获具体异常(FileNotFoundException),再捕获Exception。否则,可能就根本分不清捕获的异常是不是FileNotFoundException了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.抛出异常
// throw a comm_exception that contains throw position information
#define THROW_EX(what) \
throw comm_exception(what, __FILE__,__FUNCTION__,__LINE__);
这样在抛出异常的时候,就把文件,函数,行号信息等信息加入到异常类中。
2.捕获异常
// set the position information of catching the comm_exception
#define SET_CATCH_POS(comm_ex) \
comm_ex.set_catch_file(__FILE__);\
comm_ex.set_catch_function(__FUNCTION__);\
comm_ex.set_catch_line(__LINE__);
// throw a comm_exception that contains throw position information
#define THROW_EX(what) \
throw comm_exception(what, __FILE__,__FUNCTION__,__LINE__);
这样在抛出异常的时候,就把文件,函数,行号信息等信息加入到异常类中。
2.捕获异常
// set the position information of catching the comm_exception
#define SET_CATCH_POS(comm_ex) \
comm_ex.set_catch_file(__FILE__);\
comm_ex.set_catch_function(__FUNCTION__);\
comm_ex.set_catch_line(__LINE__);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询