Compare commits
25 Commits
e81729324c
...
master
Author | SHA1 | Date | |
---|---|---|---|
a0d52fc093 | |||
93bed37b9c | |||
4eb74a4e3a | |||
1718c9c8ad | |||
255d79affb | |||
be3556e23e | |||
ca151fbc1f | |||
907c206627 | |||
1e7f84ed84 | |||
e8561a060c | |||
84811e426c | |||
482ef9296e | |||
c293dcfa7f | |||
be993da6db | |||
cd1454d34d | |||
8c8c730a3b | |||
b4732e360b | |||
f674702ad2 | |||
16920b714d | |||
62d3723566 | |||
e7e59267ca | |||
292fcf0839 | |||
a038f90ed8 | |||
290d1a7bd3 | |||
2bc6061e1c |
1
.idea/watcherTasks.xml
generated
1
.idea/watcherTasks.xml
generated
@ -3,7 +3,6 @@
|
|||||||
<component name="ProjectTasksOptions">
|
<component name="ProjectTasksOptions">
|
||||||
<enabled-global>
|
<enabled-global>
|
||||||
<option value="go fmt" />
|
<option value="go fmt" />
|
||||||
<option value="goimports" />
|
|
||||||
</enabled-global>
|
</enabled-global>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
78
.idea/workspace.xml
generated
78
.idea/workspace.xml
generated
@ -1,78 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="AutoImportSettings">
|
|
||||||
<option name="autoReloadType" value="ALL" />
|
|
||||||
</component>
|
|
||||||
<component name="ChangeListManager">
|
|
||||||
<list default="true" id="0c7a619f-b520-4d41-ab0d-cfa1799d3cdf" name="Changes" comment="">
|
|
||||||
<change beforePath="$PROJECT_DIR$/code.go" beforeDir="false" afterPath="$PROJECT_DIR$/code.go" afterDir="false" />
|
|
||||||
</list>
|
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
||||||
</component>
|
|
||||||
<component name="FileTemplateManagerImpl">
|
|
||||||
<option name="RECENT_TEMPLATES">
|
|
||||||
<list>
|
|
||||||
<option value="Go File" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="GOROOT" url="file:///usr/local/Cellar/go@1.17/1.17.13/libexec" />
|
|
||||||
<component name="Git.Settings">
|
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
||||||
</component>
|
|
||||||
<component name="GitSEFilterConfiguration">
|
|
||||||
<file-type-list>
|
|
||||||
<filtered-out-file-type name="LOCAL_BRANCH" />
|
|
||||||
<filtered-out-file-type name="REMOTE_BRANCH" />
|
|
||||||
<filtered-out-file-type name="TAG" />
|
|
||||||
<filtered-out-file-type name="COMMIT_BY_MESSAGE" />
|
|
||||||
</file-type-list>
|
|
||||||
</component>
|
|
||||||
<component name="GoLibraries">
|
|
||||||
<option name="indexEntireGoPath" value="false" />
|
|
||||||
</component>
|
|
||||||
<component name="MarkdownSettingsMigration">
|
|
||||||
<option name="stateVersion" value="1" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectId" id="2B4P2ryw4H3y3GlDs3w9wFxFqHs" />
|
|
||||||
<component name="ProjectViewState">
|
|
||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
|
||||||
<option name="showLibraryContents" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
|
||||||
"keyToString": {
|
|
||||||
"RunOnceActivity.go.formatter.settings.were.checked": "true",
|
|
||||||
"RunOnceActivity.go.migrated.go.modules.settings": "true",
|
|
||||||
"RunOnceActivity.go.modules.go.list.on.any.changes.was.set": "true",
|
|
||||||
"WebServerToolWindowFactoryState": "false",
|
|
||||||
"dart.analysis.tool.window.visible": "false",
|
|
||||||
"go.import.settings.migrated": "true",
|
|
||||||
"last_opened_file_path": "/Users/zhangdeman",
|
|
||||||
"node.js.detected.package.eslint": "true",
|
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
|
||||||
"vue.rearranger.settings.migration": "true"
|
|
||||||
}
|
|
||||||
}]]></component>
|
|
||||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
|
||||||
<option name="version" value="3" />
|
|
||||||
</component>
|
|
||||||
<component name="Vcs.Log.Tabs.Properties">
|
|
||||||
<option name="TAB_STATES">
|
|
||||||
<map>
|
|
||||||
<entry key="MAIN">
|
|
||||||
<value>
|
|
||||||
<State />
|
|
||||||
</value>
|
|
||||||
</entry>
|
|
||||||
</map>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="VgoProject">
|
|
||||||
<integration-enabled>false</integration-enabled>
|
|
||||||
<settings-migrated>true</settings-migrated>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
20
abstrace.go
20
abstrace.go
@ -15,12 +15,16 @@ package exception
|
|||||||
type IException interface {
|
type IException interface {
|
||||||
// Error 兼容 go 内置 error
|
// Error 兼容 go 内置 error
|
||||||
Error() string
|
Error() string
|
||||||
// GetCode *获取错误码
|
// Code 获取错误码
|
||||||
GetCode() interface{}
|
Code() any
|
||||||
// GetMessage *获取错误信息
|
// Message 获取错误信息
|
||||||
GetMessage() string
|
Message() string
|
||||||
// GetData 获取异常时的返回数据
|
// Data 获取异常时的返回数据
|
||||||
GetData() interface{}
|
Data() any
|
||||||
// GetHttpCode *获取当前异常要返回的http状态码, 不设置则 默认 200
|
// ToError 转换为内置error类型
|
||||||
GetHttpCode() int
|
ToError() error
|
||||||
|
// IsCode 是否为指定code
|
||||||
|
IsCode(code any) bool
|
||||||
|
// GetStack 获取调用堆栈
|
||||||
|
GetStack() string
|
||||||
}
|
}
|
||||||
|
95
code.go
95
code.go
@ -9,7 +9,6 @@ package exception
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -18,21 +17,57 @@ var (
|
|||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 20:53 2022/6/25
|
// Date : 20:53 2022/6/25
|
||||||
codeTable map[interface{}]map[string]string
|
codeTable map[any]Code
|
||||||
|
codeList []Code
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// 规避没调用 InitCodeTable 导致空指针
|
// 规避没调用 InitCodeTable 导致空指针
|
||||||
codeTable = make(map[interface{}]map[string]string)
|
codeTable = make(map[any]Code)
|
||||||
|
codeList = make([]Code, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitCodeTable 初始化码表, 同时只指定代表业务成功的状态码以及使用的语言
|
// InitCodeTableWithMessage 初始化码表, 同时只指定代表业务成功的状态码以及使用的语言
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 20:55 2022/6/25
|
// Date : 20:55 2022/6/25
|
||||||
func InitCodeTable(table map[interface{}]map[string]string, convertDefaultSuccessCode interface{}, convertDefaultLanguage string) {
|
func InitCodeTableWithMessage(table map[any]map[string]string, convertDefaultSuccessCode any, convertDefaultLanguage string) {
|
||||||
codeTable = table
|
for code, message := range table {
|
||||||
|
c := Code{
|
||||||
|
Value: code,
|
||||||
|
Message: message,
|
||||||
|
Reason: make(map[string]string),
|
||||||
|
Resolve: make(map[string]string),
|
||||||
|
}
|
||||||
|
|
||||||
|
codeTable[code] = c
|
||||||
|
codeList = append(codeList, c)
|
||||||
|
}
|
||||||
|
if nil == convertDefaultSuccessCode {
|
||||||
|
convertDefaultSuccessCode = 0
|
||||||
|
}
|
||||||
|
if len(convertDefaultLanguage) == 0 {
|
||||||
|
convertDefaultLanguage = defaultLanguage
|
||||||
|
}
|
||||||
|
defaultSuccessCode = convertDefaultSuccessCode
|
||||||
|
defaultLanguage = convertDefaultLanguage
|
||||||
|
}
|
||||||
|
|
||||||
|
// InitCodeTableWithCodeList 按照code列表初始化
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:19 2023/6/9
|
||||||
|
func InitCodeTableWithCodeList(list []Code, convertDefaultSuccessCode any, convertDefaultLanguage string) {
|
||||||
|
codeList = list
|
||||||
|
for _, itemCode := range list {
|
||||||
|
if nil == itemCode.Reason {
|
||||||
|
itemCode.Reason = make(map[string]string)
|
||||||
|
}
|
||||||
|
|
||||||
|
codeTable[itemCode.Value] = itemCode
|
||||||
|
}
|
||||||
if nil == convertDefaultSuccessCode {
|
if nil == convertDefaultSuccessCode {
|
||||||
convertDefaultSuccessCode = 0
|
convertDefaultSuccessCode = 0
|
||||||
}
|
}
|
||||||
@ -46,10 +81,8 @@ func InitCodeTable(table map[interface{}]map[string]string, convertDefaultSucces
|
|||||||
var (
|
var (
|
||||||
// messageWithCode 自动在message文案后追加状态码
|
// messageWithCode 自动在message文案后追加状态码
|
||||||
messageWithCode = true
|
messageWithCode = true
|
||||||
// defaultHttpCode 默认的http状态码
|
|
||||||
defaultHttpCode = http.StatusOK
|
|
||||||
// defaultSuccessCode 默认代表成功的状态码
|
// defaultSuccessCode 默认代表成功的状态码
|
||||||
defaultSuccessCode interface{}
|
defaultSuccessCode any = 0
|
||||||
// defaultLanguage 默认的语言
|
// defaultLanguage 默认的语言
|
||||||
defaultLanguage = "zh"
|
defaultLanguage = "zh"
|
||||||
)
|
)
|
||||||
@ -63,32 +96,48 @@ func MessageWithoutCode() {
|
|||||||
messageWithCode = false
|
messageWithCode = false
|
||||||
}
|
}
|
||||||
|
|
||||||
// getMessage 根据code获取文案
|
// GetMessage 根据code获取文案
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 21:16 2022/6/25
|
// Date : 21:16 2022/6/25
|
||||||
func getMessage(code interface{}) string {
|
func GetMessage(code any, defaultMessage ...string) string {
|
||||||
message, exist := codeTable[code]
|
var (
|
||||||
if !exist {
|
inputCodeInfo Code
|
||||||
// 无论是否开启 messageWithCode , 未知错误强行带 code
|
exist bool
|
||||||
return fmt.Sprintf("未知错误【%v】", code)
|
)
|
||||||
|
if inputCodeInfo, exist = codeTable[code]; !exist {
|
||||||
|
// 错误码不存在
|
||||||
|
if len(defaultMessage) > 0 && len(defaultMessage[0]) > 0 {
|
||||||
|
return defaultMessage[0]
|
||||||
|
}
|
||||||
|
// 无论是否开启 messageWithCode , 未知错误强行带 code
|
||||||
|
return fmt.Sprintf("unknown error【%v】", code)
|
||||||
}
|
}
|
||||||
if messageWithCode {
|
|
||||||
if code == defaultSuccessCode {
|
if code == defaultSuccessCode {
|
||||||
// 请求成功, 一直不带状态码后缀
|
// 请求成功, 一直不带状态码后缀
|
||||||
return message[defaultLanguage]
|
return inputCodeInfo.Message[defaultLanguage]
|
||||||
}
|
}
|
||||||
return fmt.Sprintf(message[defaultLanguage]+"【%v】", code)
|
if messageWithCode {
|
||||||
|
return fmt.Sprintf(inputCodeInfo.Message[defaultLanguage]+"【%v】", code)
|
||||||
}
|
}
|
||||||
return message[defaultLanguage]
|
return inputCodeInfo.Message[defaultLanguage]
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMessage 获取消息信息
|
// GetCodeList ...
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 12:58 2022/6/26
|
// Date : 18:04 2023/6/9
|
||||||
func GetMessage(code interface{}) string {
|
func GetCodeList() []Code {
|
||||||
return getMessage(code)
|
return codeList
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCodeTable ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 18:05 2023/6/9
|
||||||
|
func GetCodeTable() map[any]Code {
|
||||||
|
return codeTable
|
||||||
}
|
}
|
||||||
|
20
define.go
Normal file
20
define.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// Package exception ...
|
||||||
|
//
|
||||||
|
// Description : exception ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 2023-06-09 15:54
|
||||||
|
package exception
|
||||||
|
|
||||||
|
// Code 状态码的结构
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 15:55 2023/6/9
|
||||||
|
type Code struct {
|
||||||
|
Value any `json:"value"` // 状态码的值
|
||||||
|
Message map[string]string `json:"message"` // 状态码对应的文案(key -> 语言 , value -> 对应语言的描述)
|
||||||
|
Reason map[string]string `json:"reason"` // 产生此错误码的原因描述(key -> 语言 , value -> 对应语言的原因列表)
|
||||||
|
Resolve map[string]string `json:"resolve"` // 解决此错误码的方案描述(key -> 语言 , value -> 对应语言的方案列表)
|
||||||
|
}
|
117
exception.go
117
exception.go
@ -8,8 +8,12 @@
|
|||||||
package exception
|
package exception
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"runtime"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Exception 异常接口的具体实现
|
// Exception 异常接口的具体实现
|
||||||
@ -18,30 +22,52 @@ import (
|
|||||||
//
|
//
|
||||||
// Date *: 21:09 2022/6/25
|
// Date *: 21:09 2022/6/25
|
||||||
type Exception struct {
|
type Exception struct {
|
||||||
code interface{}
|
code any
|
||||||
message string
|
message string
|
||||||
httpCode int
|
data any
|
||||||
data interface{}
|
stack string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exception) Error() string {
|
func (e *Exception) Error() string {
|
||||||
return e.GetMessage()
|
mapData := map[string]any{
|
||||||
|
"code": e.Code(),
|
||||||
|
"msg": e.Message(),
|
||||||
|
"data": e.Data(),
|
||||||
|
}
|
||||||
|
byteData, _ := json.Marshal(mapData)
|
||||||
|
return string(byteData)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exception) GetCode() interface{} {
|
func (e *Exception) GetStack() string {
|
||||||
|
return e.stack
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *Exception) Code() any {
|
||||||
return e.code
|
return e.code
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exception) GetMessage() string {
|
func (e *Exception) Message() string {
|
||||||
return e.message
|
return e.message
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exception) GetData() interface{} {
|
func (e *Exception) Data() any {
|
||||||
return e.data
|
return e.data
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exception) GetHttpCode() int {
|
func (e *Exception) ToError() error {
|
||||||
return e.httpCode
|
if nil == e {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return errors.New(e.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsCode 判断是否为指定错误码
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 00:39 2023/9/28
|
||||||
|
func (e *Exception) IsCode(inputCode any) bool {
|
||||||
|
return fmt.Sprintf("%v", inputCode) == fmt.Sprintf("%v", e.Code())
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewWithCode 仅使用错误码实例化异常
|
// NewWithCode 仅使用错误码实例化异常
|
||||||
@ -49,17 +75,8 @@ func (e *Exception) GetHttpCode() int {
|
|||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 21:22 2022/6/25
|
// Date : 21:22 2022/6/25
|
||||||
func NewWithCode(code interface{}) IException {
|
func NewWithCode(code any) IException {
|
||||||
return New(code, defaultHttpCode, nil)
|
return New(code, map[string]any{}, "")
|
||||||
}
|
|
||||||
|
|
||||||
// NewWithCodeAndHttpCode 使用 code + http_code 获取实例
|
|
||||||
//
|
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
|
||||||
//
|
|
||||||
// Date : 21:25 2022/6/25
|
|
||||||
func NewWithCodeAndHttpCode(code interface{}, httpCode int) IException {
|
|
||||||
return New(code, httpCode, nil)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewWithCodeAndData 使用 code + data 获取异常实例
|
// NewWithCodeAndData 使用 code + data 获取异常实例
|
||||||
@ -67,8 +84,8 @@ func NewWithCodeAndHttpCode(code interface{}, httpCode int) IException {
|
|||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 21:28 2022/6/25
|
// Date : 21:28 2022/6/25
|
||||||
func NewWithCodeAndData(code interface{}, data interface{}) IException {
|
func NewWithCodeAndData(code any, data map[string]any) IException {
|
||||||
return New(code, defaultHttpCode, data)
|
return New(code, data, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
// New 获取异常实例
|
// New 获取异常实例
|
||||||
@ -76,16 +93,34 @@ func NewWithCodeAndData(code interface{}, data interface{}) IException {
|
|||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 21:28 2022/6/25
|
// Date : 21:28 2022/6/25
|
||||||
func New(code interface{}, httpCode int, data interface{}) IException {
|
func New(code any, data any, defaultMessage ...string) IException {
|
||||||
if nil == data {
|
if nil == data {
|
||||||
// 保证数据结构的一致性, 同时避免后续使用出现空指针
|
// 保证数据结构的一致性, 同时避免后续使用出现空指针
|
||||||
data = map[string]interface{}{}
|
data = map[string]any{}
|
||||||
|
}
|
||||||
|
pcs := make([]uintptr, 128)
|
||||||
|
n := runtime.Callers(2, pcs)
|
||||||
|
frames := runtime.CallersFrames(pcs[:n])
|
||||||
|
var sb strings.Builder
|
||||||
|
for {
|
||||||
|
frame, more := frames.Next()
|
||||||
|
sb.WriteString(frame.Function)
|
||||||
|
sb.WriteByte('\n')
|
||||||
|
sb.WriteByte('\t')
|
||||||
|
sb.WriteString(frame.File)
|
||||||
|
sb.WriteByte(':')
|
||||||
|
sb.WriteString(strconv.Itoa(frame.Line))
|
||||||
|
sb.WriteByte('\n')
|
||||||
|
|
||||||
|
if !more {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return &Exception{
|
return &Exception{
|
||||||
code: code,
|
code: code,
|
||||||
message: getMessage(code),
|
message: GetMessage(code, defaultMessage...),
|
||||||
httpCode: httpCode,
|
|
||||||
data: data,
|
data: data,
|
||||||
|
stack: sb.String(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,13 +129,13 @@ func New(code interface{}, httpCode int, data interface{}) IException {
|
|||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 21:36 2022/6/25
|
// Date : 21:36 2022/6/25
|
||||||
func NewFromError(code interface{}, err error) IException {
|
func NewFromError(code any, err error) IException {
|
||||||
if nil == err {
|
if nil == err {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return New(code, defaultHttpCode, map[string]interface{}{
|
return New(code, map[string]any{
|
||||||
"error": err.Error(),
|
"err_msg": err.Error(),
|
||||||
})
|
}, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewFromMessage 从 code message 生成exception
|
// NewFromMessage 从 code message 生成exception
|
||||||
@ -108,32 +143,20 @@ func NewFromError(code interface{}, err error) IException {
|
|||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 22:25 2023/2/11
|
// Date : 22:25 2023/2/11
|
||||||
func NewFromMessage(code interface{}, message string) IException {
|
func NewFromMessage(code any, message string) IException {
|
||||||
if len(message) == 0 {
|
if len(message) == 0 {
|
||||||
message = fmt.Sprintf("%v", code)
|
message = GetMessage(code, "unknown error")
|
||||||
}
|
}
|
||||||
return NewFromError(code, errors.New(message))
|
return NewFromError(code, errors.New(message))
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToError 转换成内置error
|
|
||||||
//
|
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
|
||||||
//
|
|
||||||
// Date : 21:37 2022/6/25
|
|
||||||
func ToError(e *Exception) error {
|
|
||||||
if nil == e {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return errors.New(e.GetMessage())
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsSuccess 判断一个异常是否为成功
|
// IsSuccess 判断一个异常是否为成功
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 21:34 2022/6/25
|
// Date : 21:34 2022/6/25
|
||||||
func IsSuccess(e *Exception) bool {
|
func IsSuccess(e *Exception) bool {
|
||||||
return nil == e || e.GetCode() == defaultSuccessCode
|
return nil == e || e.IsCode(defaultSuccessCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewSuccess 代表Success的异常
|
// NewSuccess 代表Success的异常
|
||||||
@ -141,6 +164,6 @@ func IsSuccess(e *Exception) bool {
|
|||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 22:35 2022/6/25
|
// Date : 22:35 2022/6/25
|
||||||
func NewSuccess(data interface{}) IException {
|
func NewSuccess(data any) IException {
|
||||||
return New(defaultSuccessCode, defaultHttpCode, data)
|
return New(defaultSuccessCode, data, "")
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user