// Path: src/main/java/cn/niriqiang/blog/dto/Result.java
// public class Result<T> {
// 
// 
//     private Integer code;
// 
//     private String message;
// 
//     private T data;
// 
//     @Override
//     public String toString() {
//         return "Result{" +
//                 "code=" + code +
//                 ", message='" + message + '\'' +
//                 ", data=" + data +
//                 '}';
//     }
// 
//     public Result(Integer code, String message) {
//         this.code = code;
//         this.message = message;
//     }
// 
//     public Result(Integer code, String message, T data) {
//         this.code = code;
//         this.message = message;
//         this.data = data;
//     }
// 
//     public Integer getCode() {
//         return code;
//     }
// 
//     public void setCode(Integer code) {
//         this.code = code;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public void setMessage(String message) {
//         this.message = message;
//     }
// 
//     public T getData() {
//         return data;
//     }
// 
//     public void setData(T data) {
//         this.data = data;
//     }
// }
// 
// Path: src/main/java/cn/niriqiang/blog/enums/ResultEnum.java
// @ApiModel
// public enum ResultEnum {
//     OK(200, "成功"),
//     NOT_BLANK(0, "不能为空"),
//     UNKNOW_ERROR(-1, "未知错误"),
//     NOT_FOUND(-2, "目标未找到"),
//     ADD_EXITS(-3, "目标已存在"),
//     DELETE_FALSE(-4, "不能删除相关文章还存在的分类"),
//     CURRENT_PAGE_NOT_NULL(-5, "页码不能为空"),
//     ERROR_NAME_PW(-6, "用户名密码错误"),
//     NOT_LOGIN(-7, "还没登陆！");
// 
//     ResultEnum(Integer code, String message) {
//         this.code = code;
//         this.message = message;
//     }
// 
//     public Integer getCode() {
//         return code;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     @Override
//     public String toString() {
//         return "ResultEnum{" +
//                 "code=" + code +
//                 ", message='" + message + '\'' +
//                 '}';
//     }
// 
//     Integer code;
//     String message;
// }
// 
// Path: src/main/java/cn/niriqiang/blog/exception/ArticleException.java
// public class ArticleException extends Exception {
// 
//     public ArticleException(ResultEnum resultEnum) {
//         super(resultEnum);
//     }
// 
//     public ArticleException(String message, Integer code) {
//         super(message, code);
//     }
// 
// }
// 
// Path: src/main/java/cn/niriqiang/blog/exception/CategoryException.java
// public class CategoryException extends Exception {
//     public CategoryException(ResultEnum resultEnum) {
//         super(resultEnum);
//     }
// 
//     public CategoryException(String message, Integer code) {
//         super(message, code);
//     }
// 
// }
// 
// Path: src/main/java/cn/niriqiang/blog/exception/LoginException.java
// public class LoginException extends Exception {
//     public LoginException(String message, Integer code) {
//         super(message, code);
//     }
// 
//     public LoginException(ResultEnum resultEnum) {
//         super(resultEnum);
//     }
// }
// 
// Path: src/main/java/cn/niriqiang/blog/exception/TagException.java
// public class TagException extends Exception {
// 
//     public TagException(ResultEnum resultEnum) {
//         super(resultEnum);
//     }
// 
//     public TagException(String message, Integer code) {
//         super(message, code);
//     }
// }
// 
// Path: src/main/java/cn/niriqiang/blog/util/ResultUtil.java
// public class ResultUtil {
//     public static <T> Result<T> success(ResultEnum resultEnum, T t) {
//         return new Result(resultEnum.getCode(), resultEnum.getMessage(), t);
//     }
// 
//     public static Result error(Integer code, String message) {
//         return new Result(code, message);
//     }
// 
//     public static Result error(ResultEnum resultEnum) {
//         return new Result(resultEnum.getCode(), resultEnum.getMessage());
//     }
// }


import cn.niriqiang.blog.dto.Result;
import cn.niriqiang.blog.enums.ResultEnum;
import cn.niriqiang.blog.exception.ArticleException;
import cn.niriqiang.blog.exception.CategoryException;
import cn.niriqiang.blog.exception.LoginException;
import cn.niriqiang.blog.exception.TagException;
import cn.niriqiang.blog.util.ResultUtil;
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.bind.annotation.ResponseBody;
package cn.niriqiang.blog.handle;


/**
 * Created by fengyuwusong on 2017/9/24 23:17.
 */
@ControllerAdvice
public class ExceptionHandle {

    private final static Logger logger = LoggerFactory.getLogger(ExceptionHandle.class);

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result handle(Exception e) {
        if (e instanceof ArticleException) {
            logger.error("ArticleException:" + e.getMessage());
            ArticleException exception = (ArticleException) e;
            return ResultUtil.error(exception.getCode(), exception.getMessage());
        } else if (e instanceof CategoryException) {
            logger.error("CategoryException:" + e.getMessage());
            CategoryException exception = (CategoryException) e;
// Path: src/main/java/cn/niriqiang/blog/dto/Result.java
// public class Result<T> {
// 
// 
//     private Integer code;
// 
//     private String message;
// 
//     private T data;
// 
//     @Override
//     public String toString() {
//         return "Result{" +
//                 "code=" + code +
//                 ", message='" + message + '\'' +
//                 ", data=" + data +
//                 '}';
//     }
// 
//     public Result(Integer code, String message) {
//         this.code = code;
//         this.message = message;
//     }
// 
//     public Result(Integer code, String message, T data) {
//         this.code = code;
//         this.message = message;
//         this.data = data;
//     }
// 
//     public Integer getCode() {
//         return code;
//     }
// 
//     public void setCode(Integer code) {
//         this.code = code;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public void setMessage(String message) {
//         this.message = message;
//     }
// 
//     public T getData() {
//         return data;
//     }
// 
//     public void setData(T data) {
//         this.data = data;
//     }
// }
// 
// Path: src/main/java/cn/niriqiang/blog/enums/ResultEnum.java
// @ApiModel
// public enum ResultEnum {
//     OK(200, "成功"),
//     NOT_BLANK(0, "不能为空"),
//     UNKNOW_ERROR(-1, "未知错误"),
//     NOT_FOUND(-2, "目标未找到"),
//     ADD_EXITS(-3, "目标已存在"),
//     DELETE_FALSE(-4, "不能删除相关文章还存在的分类"),
//     CURRENT_PAGE_NOT_NULL(-5, "页码不能为空"),
//     ERROR_NAME_PW(-6, "用户名密码错误"),
//     NOT_LOGIN(-7, "还没登陆！");
// 
//     ResultEnum(Integer code, String message) {
//         this.code = code;
//         this.message = message;
//     }
// 
//     public Integer getCode() {
//         return code;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     @Override
//     public String toString() {
//         return "ResultEnum{" +
//                 "code=" + code +
//                 ", message='" + message + '\'' +
//                 '}';
//     }
// 
//     Integer code;
//     String message;
// }
// 
// Path: src/main/java/cn/niriqiang/blog/exception/ArticleException.java
// public class ArticleException extends Exception {
// 
//     public ArticleException(ResultEnum resultEnum) {
//         super(resultEnum);
//     }
// 
//     public ArticleException(String message, Integer code) {
//         super(message, code);
//     }
// 
// }
// 
// Path: src/main/java/cn/niriqiang/blog/exception/CategoryException.java
// public class CategoryException extends Exception {
//     public CategoryException(ResultEnum resultEnum) {
//         super(resultEnum);
//     }
// 
//     public CategoryException(String message, Integer code) {
//         super(message, code);
//     }
// 
// }
// 
// Path: src/main/java/cn/niriqiang/blog/exception/LoginException.java
// public class LoginException extends Exception {
//     public LoginException(String message, Integer code) {
//         super(message, code);
//     }
// 
//     public LoginException(ResultEnum resultEnum) {
//         super(resultEnum);
//     }
// }
// 
// Path: src/main/java/cn/niriqiang/blog/exception/TagException.java
// public class TagException extends Exception {
// 
//     public TagException(ResultEnum resultEnum) {
//         super(resultEnum);
//     }
// 
//     public TagException(String message, Integer code) {
//         super(message, code);
//     }
// }
// 
// Path: src/main/java/cn/niriqiang/blog/util/ResultUtil.java
// public class ResultUtil {
//     public static <T> Result<T> success(ResultEnum resultEnum, T t) {
//         return new Result(resultEnum.getCode(), resultEnum.getMessage(), t);
//     }
// 
//     public static Result error(Integer code, String message) {
//         return new Result(code, message);
//     }
// 
//     public static Result error(ResultEnum resultEnum) {
//         return new Result(resultEnum.getCode(), resultEnum.getMessage());
//     }
// }


// Path: src/main/java/cn/niriqiang/blog/handle/ExceptionHandle.java
import cn.niriqiang.blog.dto.Result;
import cn.niriqiang.blog.enums.ResultEnum;
import cn.niriqiang.blog.exception.ArticleException;
import cn.niriqiang.blog.exception.CategoryException;
import cn.niriqiang.blog.exception.LoginException;
import cn.niriqiang.blog.exception.TagException;
import cn.niriqiang.blog.util.ResultUtil;
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.bind.annotation.ResponseBody;

package cn.niriqiang.blog.handle;


/**
 * Created by fengyuwusong on 2017/9/24 23:17.
 */
@ControllerAdvice
public class ExceptionHandle {

    private final static Logger logger = LoggerFactory.getLogger(ExceptionHandle.class);

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result handle(Exception e) {
        if (e instanceof ArticleException) {
            logger.error("ArticleException:" + e.getMessage());
            ArticleException exception = (ArticleException) e;
            return ResultUtil.error(exception.getCode(), exception.getMessage());
        } else if (e instanceof CategoryException) {
            logger.error("CategoryException:" + e.getMessage());
            CategoryException exception = (CategoryException) e;
            return ResultUtil.error(exception.getCode(), exception.getMessage());