fscan/app/errors.go
ZacharyZcR b463984e78 refactor: 重构main.go入口文件并引入依赖注入架构
- 创建app包实现依赖注入容器和初始化器模式
- 重构main.go为六阶段清晰的初始化流程
- 新增结构化错误处理替代简陋的os.Exit调用
- 为HostInfo添加辅助函数增强功能但保持向后兼容
- 引入TargetInfo包装器支持上下文和元数据管理
- 优化代码组织提升可维护性和可测试性
2025-08-12 14:37:28 +08:00

43 lines
1015 B
Go

package app
import "fmt"
// AppError 应用程序错误类型
type AppError struct {
Code int
Message string
Cause error
}
func (e *AppError) Error() string {
if e.Cause != nil {
return fmt.Sprintf("[%d] %s: %v", e.Code, e.Message, e.Cause)
}
return fmt.Sprintf("[%d] %s", e.Code, e.Message)
}
// 预定义错误类型
var (
ErrInitFailed = &AppError{Code: 1, Message: "初始化失败"}
ErrParseFailed = &AppError{Code: 2, Message: "参数解析失败"}
ErrOutputFailed = &AppError{Code: 3, Message: "输出初始化失败"}
ErrScanFailed = &AppError{Code: 4, Message: "扫描执行失败"}
)
// NewAppError 创建新的应用程序错误
func NewAppError(code int, message string, cause error) *AppError {
return &AppError{
Code: code,
Message: message,
Cause: cause,
}
}
// WrapError 包装错误为应用程序错误
func WrapError(baseErr *AppError, cause error) *AppError {
return &AppError{
Code: baseErr.Code,
Message: baseErr.Message,
Cause: cause,
}
}