本文档介绍移动监控 Flutter SDK 提供的崩溃分析 API,包括自定义日志、自定义异常、监控 Isolate 异常、设置异常处理策略等。
1. 自定义日志
自定义日志会跟随异常信息一起上报。
接口定义
class CrashAnalysis {
static Future<void> log(String message) async {}
}自定义日志参数说明
参数 | 类型 | 是否必填 | 长度范围 | 说明 |
message | String | 是 | 1~64000 | 自定义日志消息 |
代码示例
await CrashAnalysis.log("Your custom message");2. 自定义异常对象
接口定义
class CrashAnalysis {
static Future<void> recordException(Object error, {StackTrace? stackTrace}) {}
}自定义异常参数说明
参数 | 类型 | 是否必填 | 说明 |
error | Object | 是 | 错误对象 |
stackTrace | StackTrace | 否 | 错误堆栈 |
代码示例
try {
throw StateError('Your Exception Message');
} catch (error, stackTrace) {
await CrashAnalysis.recordException(error, stackTrace: stackTrace);
}3. 自定义异常模型
接口定义
class CrashAnalysis {
static Future<void> recordExceptionModel(ExceptionModel model) {}
}ExceptionModel参数说明
参数 | 类型 | 是否必填 | 说明 |
name | String | 是 | 异常名称 |
reason | String | 是 | 异常原因 |
language | enum | 否 | 异常来源的语言 |
stackTrace | List<StackFrame> | 否 | 堆栈列表:从顶部开始倒序 |
StackFrame参数说明
参数 | 类型 | 是否必填 | 说明 |
symbol | String | 是 | 符号,一般是函数/方法名 |
file | String | 否 | 文件名 |
line | int | 否 | 行号 |
library | String | 否 | 库 |
代码示例
final stackTrace = StackTrace.current.toString();
final List<StackFrame> stackFrames = stackTrace
.split('\n')
.map((line) => line.trim())
.where((line) => line.isNotEmpty)
.map((symbol) => StackFrame(symbol: symbol))
.toList();
final model = ExceptionModel(
name: 'Your Exception Name',
reason: 'Your Exception Reason',
language: SourceLanguage.dart,
stackTrace: stackFrames,
);
await CrashAnalysis.recordExceptionModel(model);4. 监控 Isolate
监控应用创建的 Isolate
接口定义
class CrashAnalysis {
static void watchIsolate(Isolate isolate) {}
}参数说明
参数 | 类型 | 是否必填 | 说明 |
isolate | Isolate | 是 | 应用创建的 Isolate |
代码示例
final isolate = await Isolate.spawn(_isolateEntry, SendPort());
CrashAnalysis.watchIsolate(isolate);
void _isolateEntry(SendPort sendPort) {
sendPort.send('ready');
}5. 设置异常处理策略
设置异常处理策略
接口定义
enum ExceptionPolicy {
disabled,
record,
reportImmediately,
}
class CrashAnalysisConfiguration {
static set policy(ExceptionPolicy value) {}
}参数说明
参数 | 类型 | 是否必填 | 说明 |
ExceptionPolicy | enum | 是 | 异常上报模式,默认模式是立即上报(
|
代码示例
CrashAnalysisConfiguration.policy = ExceptionPolicy.record;6. 设置堆栈深度
设置异常堆栈深度
接口定义
class CrashAnalysisConfiguration {
static const int defaultStackTraceDepth = 64;
static const int maxStackTraceDepth = 256;
static set stackTraceDepth(int value) {}
}参数说明
参数 | 类型 | 是否必填 | 说明 |
value | int | 是 | 堆栈深度,默认取64帧,最大可以设置256帧 |
代码示例
CrashAnalysisConfiguration.stackTraceDepth = 128;该文章对您有帮助吗?