This commit is contained in:
sjk
2025-11-17 14:09:17 +08:00
commit 31e46c5bf6
479 changed files with 109324 additions and 0 deletions

View File

@@ -0,0 +1,141 @@
/// 应用异常基类
abstract class AppException implements Exception {
final String message;
final String? code;
final dynamic details;
const AppException(this.message, {this.code, this.details});
@override
String toString() => 'AppException: $message';
}
/// 网络异常
class NetworkException extends AppException {
const NetworkException(super.message, {super.code, super.details});
@override
String toString() => 'NetworkException: $message';
}
/// 认证异常
class AuthException extends AppException {
const AuthException(super.message, {super.code, super.details});
@override
String toString() => 'AuthException: $message';
}
/// 验证异常
class ValidationException extends AppException {
const ValidationException(super.message, {super.code, super.details});
@override
String toString() => 'ValidationException: $message';
}
/// 服务器异常
class ServerException extends AppException {
const ServerException(super.message, {super.code, super.details});
@override
String toString() => 'ServerException: $message';
}
/// 缓存异常
class CacheException extends AppException {
const CacheException(super.message, {super.code, super.details});
@override
String toString() => 'CacheException: $message';
}
/// 文件异常
class FileException extends AppException {
const FileException(super.message, {super.code, super.details});
@override
String toString() => 'FileException: $message';
}
/// 权限异常
class PermissionException extends AppException {
const PermissionException(super.message, {super.code, super.details});
@override
String toString() => 'PermissionException: $message';
}
/// 业务逻辑异常
class BusinessException extends AppException {
const BusinessException(super.message, {super.code, super.details});
@override
String toString() => 'BusinessException: $message';
}
/// 超时异常
class TimeoutException extends AppException {
const TimeoutException(super.message, {super.code, super.details});
@override
String toString() => 'TimeoutException: $message';
}
/// 数据解析异常
class ParseException extends AppException {
const ParseException(super.message, {super.code, super.details});
@override
String toString() => 'ParseException: $message';
}
/// 通用应用异常
class GeneralAppException extends AppException {
const GeneralAppException(super.message, {super.code, super.details});
@override
String toString() => 'GeneralAppException: $message';
}
/// 异常处理工具类
class ExceptionHandler {
/// 处理异常并返回用户友好的错误信息
static String getErrorMessage(dynamic error) {
if (error is AppException) {
return error.message;
} else if (error is Exception) {
return '发生了未知错误,请稍后重试';
} else {
return '系统错误,请联系客服';
}
}
/// 记录异常
static void logException(dynamic error, {StackTrace? stackTrace}) {
// 这里可以集成日志记录服务如Firebase Crashlytics
print('Exception: $error');
if (stackTrace != null) {
print('StackTrace: $stackTrace');
}
}
/// 判断是否为网络相关异常
static bool isNetworkError(dynamic error) {
return error is NetworkException ||
error is TimeoutException ||
(error is AppException && error.code?.contains('network') == true);
}
/// 判断是否为认证相关异常
static bool isAuthError(dynamic error) {
return error is AuthException ||
(error is AppException && error.code?.contains('auth') == true);
}
/// 判断是否为验证相关异常
static bool isValidationError(dynamic error) {
return error is ValidationException ||
(error is AppException && error.code?.contains('validation') == true);
}
}