首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,258 @@
|
||||
package errors
|
||||
|
||||
import "net/http"
|
||||
|
||||
// AppError represents an application-specific error.
|
||||
// AppError 表示应用程序特定的错误。
|
||||
//
|
||||
// This struct extends the standard error interface with additional fields
|
||||
// for HTTP status codes and custom error codes.
|
||||
//
|
||||
// 此结构体扩展了标准的 error 接口,添加了 HTTP 状态码和自定义错误码字段。
|
||||
type AppError struct {
|
||||
StatusCode int
|
||||
Code int
|
||||
Message string
|
||||
Err error
|
||||
}
|
||||
|
||||
// Error implements the error interface.
|
||||
// Error 实现了 error 接口。
|
||||
//
|
||||
// Returns:
|
||||
// - string: The error message, including the wrapped error if present.
|
||||
//
|
||||
// 返回值:
|
||||
// - string: 错误消息,如果存在包装的错误则包含该错误。
|
||||
func (e *AppError) Error() string {
|
||||
if e.Err != nil {
|
||||
return e.Message + ": " + e.Err.Error()
|
||||
}
|
||||
return e.Message
|
||||
}
|
||||
|
||||
// New creates a new AppError with the specified code and message.
|
||||
// New 创建一个具有指定代码和消息的新 AppError。
|
||||
//
|
||||
// Parameters:
|
||||
// - code: The custom error code.
|
||||
// - message: The error message.
|
||||
//
|
||||
// Returns:
|
||||
// - *AppError: A pointer to the new AppError instance.
|
||||
//
|
||||
// 参数:
|
||||
// - code: 自定义错误代码。
|
||||
// - message: 错误消息。
|
||||
//
|
||||
// 返回值:
|
||||
// - *AppError: 新创建的 AppError 实例指针。
|
||||
func New(code int, message string) *AppError {
|
||||
return &AppError{
|
||||
StatusCode: http.StatusOK,
|
||||
Code: code,
|
||||
Message: message,
|
||||
}
|
||||
}
|
||||
|
||||
// NewWithErr creates a new AppError with the specified code, message, and wrapped error.
|
||||
// NewWithErr 创建一个具有指定代码、消息和包装错误的新 AppError。
|
||||
//
|
||||
// Parameters:
|
||||
// - code: The custom error code.
|
||||
// - message: The error message.
|
||||
// - err: The wrapped error.
|
||||
//
|
||||
// Returns:
|
||||
// - *AppError: A pointer to the new AppError instance.
|
||||
//
|
||||
// 参数:
|
||||
// - code: 自定义错误代码。
|
||||
// - message: 错误消息。
|
||||
// - err: 包装的错误。
|
||||
//
|
||||
// 返回值:
|
||||
// - *AppError: 新创建的 AppError 实例指针。
|
||||
func NewWithErr(code int, message string, err error) *AppError {
|
||||
return &AppError{
|
||||
StatusCode: http.StatusOK,
|
||||
Code: code,
|
||||
Message: message,
|
||||
Err: err,
|
||||
}
|
||||
}
|
||||
|
||||
// BadRequest creates an AppError for 400 Bad Request.
|
||||
// BadRequest 创建一个 400 Bad Request 的 AppError。
|
||||
//
|
||||
// Parameters:
|
||||
// - message: The error message.
|
||||
//
|
||||
// Returns:
|
||||
// - *AppError: A pointer to the BadRequest AppError.
|
||||
//
|
||||
// 参数:
|
||||
// - message: 错误消息。
|
||||
//
|
||||
// 返回值:
|
||||
// - *AppError: BadRequest AppError 的指针。
|
||||
func BadRequest(message string) *AppError {
|
||||
return &AppError{
|
||||
StatusCode: http.StatusBadRequest,
|
||||
Code: 400,
|
||||
Message: message,
|
||||
}
|
||||
}
|
||||
|
||||
// Unauthorized creates an AppError for 401 Unauthorized.
|
||||
// Unauthorized 创建一个 401 Unauthorized 的 AppError。
|
||||
//
|
||||
// Parameters:
|
||||
// - message: The error message.
|
||||
//
|
||||
// Returns:
|
||||
// - *AppError: A pointer to the Unauthorized AppError.
|
||||
//
|
||||
// 参数:
|
||||
// - message: 错误消息。
|
||||
//
|
||||
// 返回值:
|
||||
// - *AppError: Unauthorized AppError 的指针。
|
||||
func Unauthorized(message string) *AppError {
|
||||
return &AppError{
|
||||
StatusCode: http.StatusUnauthorized,
|
||||
Code: 401,
|
||||
Message: message,
|
||||
}
|
||||
}
|
||||
|
||||
// Forbidden creates an AppError for 403 Forbidden.
|
||||
// Forbidden 创建一个 403 Forbidden 的 AppError。
|
||||
//
|
||||
// Parameters:
|
||||
// - message: The error message.
|
||||
//
|
||||
// Returns:
|
||||
// - *AppError: A pointer to the Forbidden AppError.
|
||||
//
|
||||
// 参数:
|
||||
// - message: 错误消息。
|
||||
//
|
||||
// 返回值:
|
||||
// - *AppError: Forbidden AppError 的指针。
|
||||
func Forbidden(message string) *AppError {
|
||||
return &AppError{
|
||||
StatusCode: http.StatusForbidden,
|
||||
Code: 403,
|
||||
Message: message,
|
||||
}
|
||||
}
|
||||
|
||||
// Conflict creates an AppError for 409 Conflict.
|
||||
// Conflict 创建一个 409 Conflict 的 AppError。
|
||||
//
|
||||
// Parameters:
|
||||
// - message: The error message.
|
||||
//
|
||||
// Returns:
|
||||
// - *AppError: A pointer to the Conflict AppError.
|
||||
//
|
||||
// 参数:
|
||||
// - message: 错误消息。
|
||||
//
|
||||
// 返回值:
|
||||
// - *AppError: Conflict AppError 的指针。
|
||||
func Conflict(message string) *AppError {
|
||||
return &AppError{
|
||||
StatusCode: http.StatusConflict,
|
||||
Code: 409,
|
||||
Message: message,
|
||||
}
|
||||
}
|
||||
|
||||
// NotFound creates an AppError for 404 Not Found.
|
||||
// NotFound 创建一个 404 Not Found 的 AppError。
|
||||
//
|
||||
// Parameters:
|
||||
// - message: The error message.
|
||||
//
|
||||
// Returns:
|
||||
// - *AppError: A pointer to the NotFound AppError.
|
||||
//
|
||||
// 参数:
|
||||
// - message: 错误消息。
|
||||
//
|
||||
// 返回值:
|
||||
// - *AppError: NotFound AppError 的指针。
|
||||
func NotFound(message string) *AppError {
|
||||
return &AppError{
|
||||
StatusCode: http.StatusNotFound,
|
||||
Code: 404,
|
||||
Message: message,
|
||||
}
|
||||
}
|
||||
|
||||
// InternalError creates an AppError for 500 Internal Server Error.
|
||||
// InternalError 创建一个 500 Internal Server Error 的 AppError。
|
||||
//
|
||||
// Parameters:
|
||||
// - message: The error message.
|
||||
// - err: The wrapped error (typically the underlying cause).
|
||||
//
|
||||
// Returns:
|
||||
// - *AppError: A pointer to the InternalError AppError.
|
||||
//
|
||||
// 参数:
|
||||
// - message: 错误消息。
|
||||
// - err: 包装的错误(通常是根本原因)。
|
||||
//
|
||||
// 返回值:
|
||||
// - *AppError: InternalError AppError 的指针。
|
||||
func InternalError(message string, err error) *AppError {
|
||||
return &AppError{
|
||||
StatusCode: http.StatusInternalServerError,
|
||||
Code: 500,
|
||||
Message: message,
|
||||
Err: err,
|
||||
}
|
||||
}
|
||||
|
||||
// IsAppError checks if an error is an AppError.
|
||||
// IsAppError 检查错误是否是 AppError。
|
||||
//
|
||||
// Parameters:
|
||||
// - err: The error to check.
|
||||
//
|
||||
// Returns:
|
||||
// - bool: true if the error is an AppError, false otherwise.
|
||||
//
|
||||
// 参数:
|
||||
// - err: 要检查的错误。
|
||||
//
|
||||
// 返回值:
|
||||
// - bool: 如果错误是 AppError 则返回 true,否则返回 false。
|
||||
func IsAppError(err error) bool {
|
||||
_, ok := err.(*AppError)
|
||||
return ok
|
||||
}
|
||||
|
||||
// AsAppError attempts to convert an error to an AppError.
|
||||
// AsAppError 尝试将错误转换为 AppError。
|
||||
//
|
||||
// Parameters:
|
||||
// - err: The error to convert.
|
||||
//
|
||||
// Returns:
|
||||
// - *AppError: The converted AppError if successful.
|
||||
// - bool: true if the conversion was successful, false otherwise.
|
||||
//
|
||||
// 参数:
|
||||
// - err: 要转换的错误。
|
||||
//
|
||||
// 返回值:
|
||||
// - *AppError: 如果转换成功则返回转换后的 AppError。
|
||||
// - bool: 如果转换成功则返回 true,否则返回 false。
|
||||
func AsAppError(err error) (*AppError, bool) {
|
||||
e, ok := err.(*AppError)
|
||||
return e, ok
|
||||
}
|
||||
Reference in New Issue
Block a user