fix: 修复错误统计中 UNKNOWN 错误码问题
三处修复: 1. Analytics.logError() — 从通用 Error 提取 NSError domain:code, 不再一律记录为 UNKNOWN 2. AppState — 通用 catch 已构造 AppError(LPB-901),改用 logAppError 记录,确保错误码正确归类 3. HomeView — 视频导入错误包装为 AppError(IMP-001), 添加 import LivePhotoCore Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -133,8 +133,12 @@ final class Analytics {
|
||||
// 记录到统计
|
||||
errorStats.record(code: appError.code, stage: appError.stage?.rawValue)
|
||||
} else {
|
||||
// 通用错误
|
||||
let code = "UNKNOWN"
|
||||
// 从通用错误中提取有用信息
|
||||
let nsError = error as NSError
|
||||
let code = "\(nsError.domain):\(nsError.code)"
|
||||
params["code"] = code
|
||||
params["domain"] = nsError.domain
|
||||
params["nsErrorCode"] = nsError.code
|
||||
errorStats.record(code: code, stage: nil)
|
||||
}
|
||||
|
||||
|
||||
@@ -168,13 +168,14 @@ final class AppState {
|
||||
}
|
||||
return nil
|
||||
} catch {
|
||||
let appError = AppError(code: "LPB-901", message: "未知错误", underlyingErrorDescription: error.localizedDescription, suggestedActions: ["重试"])
|
||||
await MainActor.run {
|
||||
self.isProcessing = false
|
||||
self.processingError = AppError(code: "LPB-901", message: "未知错误", underlyingErrorDescription: error.localizedDescription, suggestedActions: ["重试"])
|
||||
self.processingError = appError
|
||||
self.currentWorkId = nil
|
||||
self.currentProcessingTask = nil
|
||||
}
|
||||
Analytics.shared.logError(.buildLivePhotoFail, error: error)
|
||||
Analytics.shared.logAppError(.buildLivePhotoFail, appError: appError)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import SwiftUI
|
||||
import PhotosUI
|
||||
import AVKit
|
||||
import Photos
|
||||
import LivePhotoCore
|
||||
|
||||
struct HomeView: View {
|
||||
@Environment(AppState.self) private var appState
|
||||
@@ -279,7 +280,12 @@ struct HomeView: View {
|
||||
errorMessage = String(format: format, error.localizedDescription)
|
||||
isLoading = false
|
||||
selectedItem = nil
|
||||
Analytics.shared.logError(.importVideoFail, error: error)
|
||||
let appError = AppError(
|
||||
code: "IMP-001",
|
||||
message: "视频导入失败",
|
||||
underlyingErrorDescription: error.localizedDescription
|
||||
)
|
||||
Analytics.shared.logAppError(.importVideoFail, appError: appError)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user