cn.newgxu.lab.core.controller.GlobalExceptionHandler.java Source code

Java tutorial

Introduction

Here is the source code for cn.newgxu.lab.core.controller.GlobalExceptionHandler.java

Source

/*
 * Copyright (c) 2001-2013 newgxu.cn <the original author or authors>.
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package cn.newgxu.lab.core.controller;

import static cn.newgxu.lab.core.common.ViewConstants.AJAX_MESSAGE;
import static cn.newgxu.lab.core.common.ViewConstants.AJAX_STATUS;
import static cn.newgxu.lab.core.common.ViewConstants.ERROR_PAGE;
import static cn.newgxu.lab.core.common.ViewConstants.EXP_REASON;
import static cn.newgxu.lab.core.common.ViewConstants.UNKNOWN_REASON;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

/**
 * ?json?
 * 
 * @author longkai
 * @email im.longkai@gmail.com
 * @since 2013-3-29
 * @version 0.1
 */
@ControllerAdvice
public class GlobalExceptionHandler {

    private static final Logger L = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    /**
     * ??ajaxhtml~
     * @param t ?
     * @return json or html depends on what the client wants!
     */
    @ExceptionHandler(Throwable.class)
    public ModelAndView exp(Throwable t) {
        L.error("?", t);
        ModelAndView mav = new ModelAndView(ERROR_PAGE);
        mav.addObject(AJAX_STATUS, "no");
        mav.addObject(AJAX_MESSAGE, t.getMessage());
        if (t.getCause() != null) {
            mav.addObject(EXP_REASON, t.getCause().getMessage());
        } else {
            mav.addObject(EXP_REASON, UNKNOWN_REASON);
        }
        return mav;
    }

}