首先这个try{}catch(){}是可以嵌套使用的,所以不理解应该是思路上的问题。
从句型上来说,你可以把try当成if,catch当成else,只要成对出现都不会编译出错。(当然捕捉的异常要存在继承关系)JVM执行的时候,会将离try最近的catch当成一对执行。这么想应该简单多了吧
从处理问题的角度来说,在try中嵌套,显然是为了细化执行的代码,比如:
try {
bufReader = new BufferedReader(new FileReader(new File("C://Log.log")));
try {
String line = bufReader.readLine();
这样很容易就看出是哪里出了异常,catch的时候也可以处理的更细致,更贴切;这种情况下,catch中的异常不必一定要有继承关系,注意对应好try中的语句就行了。
而在catch中嵌套,则是为了细化处理异常的代码,比如:
try { // Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest(); }
catch (e) { // Internet Explorer
try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) {。。。
这样则可以将捕捉到的异常细化地处理,有点像switch的感觉。这种情况下,由于嵌套的try是在捕捉异常之后再判断的,所以嵌套中的异常通常是外层异常的子类或同一个类,否则嵌套就没有多大意义了。
希望对你有所帮助~ |