在《JSP应用开发详解》中,讲解config对象时给出了一个计数器的例子,在实现的过程中希望计数器从1000开始计数。书中给出的代码是这样的:
xml 代码
- <%@ page contentType="text/html; charset=GBK" %>
- <html>
- <head>
- <title>
- config
- </title>
- </head>
- <body bgcolor="#ffffff">
- <h1>
- Test config
- </h1>
- <%
- int org=0;
- int count=0;
- try{
- org=Integer.parseInt(config.getInitParameter("counter"));
- }catch(Exception e)
- {
- out.println("org:"+e);
- }
- try{
- count=Integer.parseInt((application.getAttribute("config_counter").toString()));
- }
- catch(Exception e)
- {
- out.println("count:"+e);
- }
- if(count<org)
- {
- count=org;
- }
- out.println("此页面已经访问了"+count+"次");
- count++;
- application.setAttribute("config_counter",new Integer(count));
- %>
- </body>
- </html>
运行的结果倒也正常,没有抛出任何异常。不过我在敲这个例子的时候偷了点懒,写成了这个样子:
xml 代码
- <%@ page contentType="text/html; charset=GBK" errorPage=""%>
- <html>
- <head>
- <title>
- config
- </title>
- </head>
- <body bgcolor="#ffffff">
- <h1>
- Test config
- </h1>
- <%
- int org=0;
- int count=0;
- try{
- org=Integer.parseInt(config.getInitParameter("counter"));
- count=Integer.parseInt((application.getAttribute("config_counter").toString()));
- if(count<org)
- {
- count=org;
- }
- out.println("此页面已经访问了"+count+"次");
- count++;
- application.setAttribute("config_counter",new Integer(count));
- }catch(Exception e)
- {
- out.println("org:"+e);
- }
- %>
- </body>
- </html>
把异常处理放在一起了 ,结果程序运行起来就出错了,报的异常是:org:java.lang.NullPointerException 。
不明白的就是这两种写法为什么不一样呢?如果第一次通过application.getAttribute()读取变量会出错的话,为什么第一种写法就没有打印出任何异常呢?请教了,谢谢。