36 lines
1.1 KiB
Dart
36 lines
1.1 KiB
Dart
/// API异常类
|
|
class ApiException implements Exception {
|
|
ApiException(this.statusCode, this.message);
|
|
final int statusCode;
|
|
final String message;
|
|
|
|
@override
|
|
String toString() => 'ApiException: $statusCode - $message';
|
|
}
|
|
|
|
|
|
|
|
/// 🚀 新增:积分不足异常
|
|
/// 当用户积分余额不足时抛出
|
|
class InsufficientCreditsException extends ApiException {
|
|
final int? requiredCredits;
|
|
|
|
InsufficientCreditsException(String message, [this.requiredCredits])
|
|
: super(402, message); // HTTP 402 Payment Required
|
|
|
|
/// 从错误消息中提取需要的积分数量
|
|
static int? extractRequiredCredits(String message) {
|
|
final regex = RegExp(r'需要 (\d+) 积分');
|
|
final match = regex.firstMatch(message);
|
|
if (match != null) {
|
|
return int.tryParse(match.group(1) ?? '');
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// 创建带有自动提取积分数量的实例
|
|
factory InsufficientCreditsException.fromMessage(String message) {
|
|
final requiredCredits = extractRequiredCredits(message);
|
|
return InsufficientCreditsException(message, requiredCredits);
|
|
}
|
|
} |