在Dart中断言失败时如何打印消息?

Set*_*add 11 dart

我们想在assert()失败时打印一条消息.目前在Dart中,断言只接受布尔值.我们想给开发人员明确的理由和说明,以便在断言失败时做什么.

fil*_*iph 15

Dart 1.22开始,assert()采用可选消息.

assert(configFile != null, "Tool config missing.");
Run Code Online (Sandbox Code Playgroud)

如果断言失败,它将产生如下内容:

Unhandled exception:
'file:///.../main.dart': Failed assertion: line 9 pos 10:
'configFile != null': Tool config missing.
#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:33)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:29)
#2      main (file:///.../main.dart:9:10)
Run Code Online (Sandbox Code Playgroud)

请注意,错误消息包括实际的断言(configFile != null).


stt*_*106 6

只需添加一下,如果您通过命令行执行dart文件,则需要启用以下断言,请参见此处的参考:

dart --enable-asserts main.dart
Run Code Online (Sandbox Code Playgroud)


Gün*_*uer 5

有一个未解决的问题和解决方法https://github.com/dart-lang/sdk/issues/6190#issuecomment-119103626

assert(() => test || throw "message");
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但这种方式不起作用。稍微修改过的工作版本

var test = false;
assert(test ? true : throw "message");
Run Code Online (Sandbox Code Playgroud)

也可以看看