Compare commits
	
		
			4 Commits
		
	
	
		
			be3556e23e
			...
			255d79affb
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 255d79affb | |||
| ca151fbc1f | |||
| 907c206627 | |||
| 1e7f84ed84 | 
| @ -25,4 +25,6 @@ type IException interface { | ||||
| 	ToError() error | ||||
| 	// IsCode 是否为指定code | ||||
| 	IsCode(code any) bool | ||||
| 	// GetStack 获取调用堆栈 | ||||
| 	GetStack() string | ||||
| } | ||||
|  | ||||
							
								
								
									
										2
									
								
								code.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								code.go
									
									
									
									
									
								
							| @ -82,7 +82,7 @@ var ( | ||||
| 	// messageWithCode 自动在message文案后追加状态码 | ||||
| 	messageWithCode = true | ||||
| 	// defaultSuccessCode 默认代表成功的状态码 | ||||
| 	defaultSuccessCode any | ||||
| 	defaultSuccessCode any = 0 | ||||
| 	// defaultLanguage 默认的语言 | ||||
| 	defaultLanguage = "zh" | ||||
| ) | ||||
|  | ||||
							
								
								
									
										27
									
								
								exception.go
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								exception.go
									
									
									
									
									
								
							| @ -10,6 +10,9 @@ package exception | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"runtime" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
| ) | ||||
|  | ||||
| // Exception 异常接口的具体实现 | ||||
| @ -21,12 +24,17 @@ type Exception struct { | ||||
| 	code    any | ||||
| 	message string | ||||
| 	data    map[string]any | ||||
| 	stack   string | ||||
| } | ||||
|  | ||||
| func (e *Exception) Error() string { | ||||
| 	return e.Message() | ||||
| } | ||||
|  | ||||
| func (e *Exception) GetStack() string { | ||||
| 	return e.stack | ||||
| } | ||||
|  | ||||
| func (e *Exception) Code() any { | ||||
| 	return e.code | ||||
| } | ||||
| @ -83,10 +91,29 @@ func New(code any, data map[string]any, defaultMessage ...string) IException { | ||||
| 		// 保证数据结构的一致性, 同时避免后续使用出现空指针 | ||||
| 		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{ | ||||
| 		code:    code, | ||||
| 		message: GetMessage(code, defaultMessage...), | ||||
| 		data:    data, | ||||
| 		stack:   sb.String(), | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user