11
zhouwei
2019-07-12 143f7be25ff19896e70ffc486999a64a3bc3b76f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.safeluck.aaej.app.controller
 
import com.safeluck.aaej.base.dbhelper.impl.DBProxy
import com.safeluck.aaej.base.dbhelper.impl.DbHelper
import com.safeluck.aaej.base.vo.JsonResult
import org.apache.log4j.Logger
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.web.servlet.error.ErrorController
import org.springframework.web.bind.annotation.ControllerAdvice
import org.springframework.web.bind.annotation.ExceptionHandler
import org.springframework.web.bind.annotation.ResponseBody
import org.springframework.web.bind.annotation.RestControllerAdvice
import org.springframework.web.context.request.NativeWebRequest
import org.springframework.web.context.request.ServletWebRequest
 
import javax.servlet.http.HttpServletRequest
import java.io.PrintWriter
import java.io.StringWriter
import java.util.Date
import java.util.HashMap
 
 
/**
 * 系统全局异常Advice,拦截对应异常进行处理
 */
@RestControllerAdvice
//@ControllerAdvice
class ExceptionHandleController {
    private val logger = Logger.getLogger(this.javaClass)
 
 
    @Autowired
    internal lateinit var dbHelper: DbHelper
    @Autowired
    internal lateinit var dbProxy: DBProxy
 
 
    @ExceptionHandler(Exception::class)
    fun processException(request: NativeWebRequest, e: Exception): Any {
//        ErrorController
        e.printStackTrace()
        return JsonResult.failed(e)
        //        request.q
//        val log = sys_error_log()
//        log.data_time = Date()
//        log.error_text = exception2String(e)
//        val httpServletRequest = (request as ServletWebRequest).request
//        log.module = httpServletRequest.method + "," + httpServletRequest.requestURI
//        logger.error(log.error_text)
//        dbProxy.executebKey(DBAlias.center) { dbHelper.add(log) }
//        return log.error_text
    }
 
    private fun exception2String(e: Throwable): String {
        val sw = StringWriter()
        val pw = PrintWriter(sw, true)
        e.printStackTrace(pw)
        pw.flush()
        sw.flush()
        var result = sw.toString()
        if (result.length > 4000) {
            result = result.substring(0, 4000)
        }
        return result
    }
 
}