1.如何改进下面的程序以提高其执行性能?对你的改进作出解释,并写出新的程序。int i;URL url = new URL("http://java.sun.com/");URLConnection javaSite = url.openConnection();InputStream input = javaSite.getInputStream();InputStreamReader reader = new InputStreamReader(input);while ((i = reader.read()) != -1) {    System.out.print(i);}2.下面的程序合法吗?try {    } finally {    }3.下面的程序片断能捕获什么异常?catch (Exception e) {     }这样的异常处理有什么不好吗?
4.下面的程序片断有什么错误吗?它能否通过编译?try {} catch (Exception e) {   } catch (ArithmeticException a) {    }

解决方案 »

  1.   

    全部都很简单啊
    1、用stringbuffer去处理然后一次性输出以减少系统的开销,因为调用io设备的开销比访问内存的开销要大很多
    2、合法
    3、能处理任何exception子类的异常,包括Exception,这样处理不容易发现出错的地方
    4、编译出错,后面一个catch无法获取exception
      

  2.   

    揭晓答案:
    1.使用缓冲流!在这里,可以增加两个缓冲流: 在InputStream 上增加一个BufferedInputStream ,在InputStreamReader 上增加一个BufferedReader。改变后的程序如下: int i;URL url = new URL("http://java.sun.com/");URLConnection javaSite = url.openConnection();InputStream input = javaSite.getInputStream();BufferedInputStream in = new BufferedInputStream(input);BufferedReader reader = new BufferedReader(new InputStreamReader(in));while ((i = reader.read()) != -1) {    System.out.print(i);2.合法。
    3.该程序片段将捕获Exception类异常,由于所有异常都是Exception类的子类,
       因此,实际上该程序片段将对所有异常都进行同样地处理。而不能根据具体的异常作出不同的处理方式。
    4.由于第一个catch子句将捕获所有异常,因此,第二个catch子句永远不会被执行。不能通过编译。
      

  3.   

    全部都很简单啊 
    1、用stringbuffer去处理然后一次性输出以减少系统的开销,因为调用io设备的开销比访问内存的开销要大很多 
    2、合法 
    3、能处理任何exception子类的异常,包括Exception,这样处理不容易发现出错的地方 
    4、编译出错,后面一个catch无法获取exception,因为前面的cathch已经获取了所有的异常
      

  4.   

    昨天去东营面试!问我9个JSP内置对象我都没有答上来!丢人呀
      

  5.   

    第一个我也不会呀,郁闷啊,后面的都比较简单
    2、合法  
    3、能处理任何exception子类的异常,包括Exception,这样处理不容易发现出错的地方  
    4、编译出错,后面一个catch无法获取exception,因为前面的cathch已经获取了所有的异常
      

  6.   

    我前两天就写了关于 URLConnection 的代码,
    呵呵,多谢搂主,因为我也没用buffer。赶紧去改代码。关于其他的我建议写程序前一定要捕获异常并进行处理。