先贴出我的代码再引出我的问题[code=java]package cn.itcast.heima;
import javax.servlet.GenericServlet;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloGeneric extends GenericServlet{
public void service(ServletRequest req,ServletResponse res){
try{
PrintWriter pw = res.getWriter();
pw.println("你好,我是GenericServlet!");
}catch(ServletException e){
e.printStackTrace();
}catch(IOException e){
System.out.println(e.toString());
}
}
}[/code]我们知道要编写一个Servlet程序,有三种方法,我采用其中一种是继承GenericServlet抽象类,其中只有Service是抽象方法,所以采用这种方式必须复写Service方法,但是我们查下Servlet文档可知完整定义是这样的public abstract void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException,这是要抛出两个异常的,一个ServletException,一个IOException。
而我的疑问一、是复写方法可以不采用这种定义方式[code=java]public void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException{代码块}[/code]而可以采用在复写方法时直接try catch住异常,如我上面写法,这是为什么?
疑问二、其实我上面写法有点错误。
上面不能捕获ServletException错误,否则编译出现错误。
错误:HelloGeneric.java:13: 错误: 在相应的 try 语句主体中不能抛出异常错误ServletExcept
ion}catch(ServletException e){
1 个错误
为什么方法会抛出ServletException错误,但为什么不能捕捉呢?
而这样写却通过了
正确代码:[code=java]package cn.itcast.heima;
import javax.servlet.GenericServlet;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloGeneric extends GenericServlet{
public void service(ServletRequest req,ServletResponse res){
try{
PrintWriter pw = res.getWriter();
pw.println("你好,我是GenericServlet!");
}catch(IOException e){
System.out.println(e.toString());
}
}
}[/code]在tomcat运行该程序,正确执行,然而却被上面两个疑问给难住了,期待童鞋们的解答!!!!!!!!
[ 本帖最后由 蔡园园 于 2011-09-20 18:40 编辑 ] |