Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gic-enterprise-base
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
base_platform_enterprise
gic-enterprise-base
Commits
6ce95a7a
Commit
6ce95a7a
authored
Sep 26, 2019
by
guojuxing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
common全局异常处理注视
parent
88eec371
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
96 additions
and
96 deletions
+96
-96
GlobalExceptionHandler.java
.../com/gic/enterprise/exception/GlobalExceptionHandler.java
+96
-96
No files found.
gic-enterprise-common/src/main/java/com/gic/enterprise/exception/GlobalExceptionHandler.java
View file @
6ce95a7a
package
com
.
gic
.
enterprise
.
exception
;
import
java.io.ByteArrayOutputStream
;
import
java.io.PrintWriter
;
import
java.util.List
;
import
java.util.Set
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.ConstraintViolation
;
import
javax.validation.ConstraintViolationException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.validation.BindException
;
import
org.springframework.validation.FieldError
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.enterprise.error.ErrorCode
;
/**
* 全局异常处理类
*
* @author hua
*/
@ControllerAdvice
@ResponseBody
public
class
GlobalExceptionHandler
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
GlobalExceptionHandler
.
class
);
@ExceptionHandler
(
Exception
.
class
)
public
RestResponse
controllerException
(
HttpServletResponse
response
,
Exception
ex
)
{
logger
.
error
(
"err"
,
ex
);
RestResponse
failureResponse
=
getRestResponse
(
ErrorCode
.
SYSTEM_ERROR
.
getCode
(),
ErrorCode
.
SYSTEM_ERROR
.
getMsg
());
StringBuilder
sb
=
new
StringBuilder
();
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
try
(
PrintWriter
printWriter
=
new
PrintWriter
(
baos
))
{
ex
.
printStackTrace
(
printWriter
);
}
try
{
sb
.
append
(
baos
.
toString
());
}
catch
(
Exception
ignored
)
{
}
if
(
sb
.
length
()
==
0
)
{
sb
.
append
(
ex
.
getMessage
());
}
// 输出详细错误信息,便于调试
failureResponse
.
setDetailError
(
sb
.
toString
());
return
failureResponse
;
}
/**
* 参数校验异常统一处理
* @param e
* @return
*/
@ExceptionHandler
(
BindException
.
class
)
public
RestResponse
customException
(
BindException
e
)
{
List
<
FieldError
>
fieldErrors
=
e
.
getFieldErrors
();
StringBuilder
errorMessage
=
new
StringBuilder
();
fieldErrors
.
forEach
(
fieldError
->
{
errorMessage
.
append
(
fieldError
.
getDefaultMessage
())
.
append
(
","
);
});
String
error
=
errorMessage
.
toString
();
return
getRestResponse
(
ErrorCode
.
PARAMETER_ERROR
.
getCode
(),
error
.
substring
(
0
,
error
.
length
()
-
1
));
}
@ExceptionHandler
(
ConstraintViolationException
.
class
)
public
RestResponse
constraintViolationException
(
ConstraintViolationException
e
)
{
Set
<
ConstraintViolation
<?>>
constraintViolations
=
e
.
getConstraintViolations
();
String
paramName
=
constraintViolations
.
iterator
().
next
().
getPropertyPath
().
toString
();
String
paramError
=
constraintViolations
.
iterator
().
next
().
getMessage
();
return
getRestResponse
(
ErrorCode
.
PARAMETER_ERROR
.
getCode
(),
getFailFastMsg
(
paramName
,
paramError
));
}
@ResponseBody
@ExceptionHandler
(
CommonException
.
class
)
public
RestResponse
customException
(
CommonException
e
)
{
return
getRestResponse
(
e
.
getErrorCode
(),
e
.
getMessage
());
}
private
RestResponse
getRestResponse
(
String
errorCode
,
String
message
)
{
return
RestResponse
.
failure
(
errorCode
,
message
);
}
private
static
String
getFailFastMsg
(
String
paramName
,
String
paramError
)
{
return
String
.
format
(
"%s:%s"
,
paramName
,
paramError
);
}
}
//
package com.gic.enterprise.exception;
//
//
import java.io.ByteArrayOutputStream;
//
import java.io.PrintWriter;
//
import java.util.List;
//
import java.util.Set;
//
//
import javax.servlet.http.HttpServletResponse;
//
import javax.validation.ConstraintViolation;
//
import javax.validation.ConstraintViolationException;
//
//
import org.slf4j.Logger;
//
import org.slf4j.LoggerFactory;
//
import org.springframework.validation.BindException;
//
import org.springframework.validation.FieldError;
//
import org.springframework.web.bind.annotation.ControllerAdvice;
//
import org.springframework.web.bind.annotation.ExceptionHandler;
//
import org.springframework.web.bind.annotation.ResponseBody;
//
//
import com.gic.commons.webapi.reponse.RestResponse;
//
import com.gic.enterprise.error.ErrorCode;
//
/
//
**
//
* 全局异常处理类
//
*
//
* @author hua
//
*/
//
@ControllerAdvice
//
@ResponseBody
//
public class GlobalExceptionHandler {
//
private static Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
//
//
@ExceptionHandler(Exception.class)
//
public RestResponse controllerException(HttpServletResponse response, Exception ex) {
//
logger.error("err", ex);
//
RestResponse failureResponse = getRestResponse(ErrorCode.SYSTEM_ERROR.getCode(), ErrorCode.SYSTEM_ERROR.getMsg());
//
StringBuilder sb = new StringBuilder();
//
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//
try (PrintWriter printWriter = new PrintWriter(baos)) {
//
ex.printStackTrace(printWriter);
//
}
//
try {
//
sb.append(baos.toString());
//
} catch (Exception ignored) {
//
}
//
if (sb.length() == 0) {
//
sb.append(ex.getMessage());
//
}
//
// 输出详细错误信息,便于调试
//
failureResponse.setDetailError(sb.toString());
//
return failureResponse;
//
}
//
//
/**
//
* 参数校验异常统一处理
//
* @param e
//
* @return
//
*/
//
@ExceptionHandler(BindException.class)
//
public RestResponse customException(BindException e) {
//
List<FieldError> fieldErrors = e.getFieldErrors();
//
StringBuilder errorMessage = new StringBuilder();
//
fieldErrors.forEach(fieldError -> {
//
errorMessage
//
.append(fieldError.getDefaultMessage())
//
.append(",");
//
});
//
String error = errorMessage.toString();
//
return getRestResponse(ErrorCode.PARAMETER_ERROR.getCode(), error.substring(0, error.length() - 1));
//
}
//
//
@ExceptionHandler(ConstraintViolationException.class)
//
public RestResponse constraintViolationException(ConstraintViolationException e) {
//
Set<ConstraintViolation<?>> constraintViolations = e.getConstraintViolations();
//
String paramName = constraintViolations.iterator().next().getPropertyPath().toString();
//
String paramError = constraintViolations.iterator().next().getMessage();
//
return getRestResponse(ErrorCode.PARAMETER_ERROR.getCode(), getFailFastMsg(paramName, paramError));
//
}
//
//
//
@ResponseBody
//
@ExceptionHandler(CommonException.class)
//
public RestResponse customException(CommonException e) {
//
return getRestResponse(e.getErrorCode(), e.getMessage());
//
}
//
//
//
private RestResponse getRestResponse(String errorCode, String message) {
//
return RestResponse.failure(errorCode, message);
//
}
//
//
private static String getFailFastMsg(String paramName, String paramError) {
//
return String.format("%s:%s", paramName, paramError);
//
}
//
//
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment