SpringMVC利用注解实现异常处理

 

在项目中如何处理出现的异常,以前通常的作法是继承Exception或实现Runnable接口来封装自定义异常,然后在项目代码中通过try...catch语句块来捕获到出现的异常,封装到我们自己定义的异常类中。如果项目中使用的SpringMVC框架的话,这里介绍另外一种也比较方便的异常处理方法,本人还是比较喜欢这种处理方式。这里用到的是ExceptionHandler这个注解。

1、首先新建一个名为BaseController的抽象类;

public abstract class BaseController {

     @ExceptionHandler

    public String exception(HttpServletRequest request, Exception e) { 

        // 根据不同的异常类型进行不同处理

        if(e instanceof SQLException) {

           String s = "数据库异常" ;

            request.setAttribute( "exceptionMessage", s);

            return "error";     

        }else if(e instanceof IOException){

           String s = "IO异常";

            request.setAttribute( "exceptionMessage", s);

            return "error";     

        }

        else return "error"; 

    }

}

       该方法需要定义在Controller内部,然后创建一个方法并用@ExceptionHandler注解来修饰用来处理异常,这个方法基本和 @RequestMapping修饰的方法差不多,只是可以多一个类型为Exception的参数,@ExceptionHandler中可以添加一个或多个异常的类型,如果为空的话则认为可以触发所有的异常类型错误,返回值为视图名。 

2、以后让每个controller类继承定义的BaseController即可;

 

@Controller

@RequestMapping(value="/login" )

public class LoginController extends BaseController{

     private Logger logger = Logger.getLogger(LoginController.class);

     private JsonGenerator jsonGenerator = null;

     @Autowired

     IUserService userService;

     @RequestMapping(value= "/login")

     public String login() throws Exception{

            logger.info( "login....");

            //这里模拟抛出一个SQL异常信息

            throw new SQLException();

     }

}

访问页面就会显示数据库错误 信息

 

你可能感兴趣的:(SpringMVC利用注解实现异常处理)