崩溃分析 API

本文档介绍移动监控 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

异常上报模式,默认模式是立即上报(reportImmediately)可选值如下:

  • disabled: SDK 不处理;

  • record: SDK 记录下来,待应用下次冷启动上报,条数限制为8条;

  • reportImmediately: SDK 立即上报,其上报频率与条数受平台配置限制;

代码示例

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;