mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-09-14 05:56:46 +08:00

- 创建app包实现依赖注入容器和初始化器模式 - 重构main.go为六阶段清晰的初始化流程 - 新增结构化错误处理替代简陋的os.Exit调用 - 为HostInfo添加辅助函数增强功能但保持向后兼容 - 引入TargetInfo包装器支持上下文和元数据管理 - 优化代码组织提升可维护性和可测试性
43 lines
1015 B
Go
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,
|
|
}
|
|
} |