日落冬至
2019-09-17 15:50
采纳率: 21.9%
浏览 215
已采纳

帮忙看看我对java异常的理解对不对

对于java的异常,我的理解是异常是程序出现的错误导致程序无法继续运行下去。
受查异常并不是程序的错误,是环境的问题,比如说打开一个文件,第一次打开文件成功了没问题,然后我把文件删了,第二次再打开,就出错/异常了,所以它并不是程序的错,而是环境的问题。
异常是不可避免的,也是不可令其变为正常的,文件不存在,程序无法做到让它存在。所以异常不能改为正常,但是又不能继续运行下去,所以要进行特殊处理。
这个特殊处理是什么,要看具体实际情况,谁来处理才是重点。出现异常的方法能够自己进行特殊处理吗?不一定。因为很多时候出现异常的方法是其它方法调用的。为了方便我描述,在这里我举个例子。A方法调用了B方法,B方法调用了C方法,C方法出现异常了。这个时候C不能进行特殊处理,因为这个情况下C的异常不仅仅影响到C自己,还影响到了AB。比如说A需要一瓶奶茶和一瓶柠檬茶,A方法调用B方法去获得,B方法调用C方法去某个具体地方买然后返回给A方法。C方法去买,但是发现奶茶全世界禁止买卖奶茶。C出现了异常,C能采取特殊处理吗?无论它怎么处理都不能完成他的工作,所以它不能处理,只能将这个问题反馈给B,同时B受到了影响,B也不能通过其它途径买奶茶所以B同样不能特殊处理,同理B不能完成工作所以将问题反馈给A。同时A受到了影响,不过A能够特殊处理,A决定不要奶茶和柠檬茶了,选用另一个方案:白开水加冰。这里可以看出异常处理机制的好处,出异常了不是直接结束掉整个程序而是确定了出现某个异常时,选择另一个方案。C反馈给B也就是将异常抛给B,B再抛给A,A捕捉到后进行特殊处理。
猜想:系统是会自动抛出异常的,那么为什么还要写throws呢?我猜是为了定位。代码可能有几个地方都有可能出现异常,如果写了throws,然后再catch,那就定位了异常。因为不同地方的异常都要不同处理。所以要确定位置。
个人理解和猜想,希望各位大牛帮忙看看对不对。

3条回答 默认 最新

相关推荐 更多相似问题