Dart - 无法获得第一个在没有匹配时抛出异常

时间:2015-04-23 10:09:55

标签: dart

我确信这是一个简单的语法问题,但是......

为什么这个测试会抛出异常? 我预计它只会在找不到匹配项时抛出异常。

solo_test( "", (){
  List<String> lines = ["aa=1", "bb=2" ,"cc=3"];

  String line = lines.firstWhere((String line) => line.indexOf("bb") == 0, orElse: throw "could not find 'bb'");
  expect( line, equals( "bb=2"));
});

2 个答案:

答案 0 :(得分:3)

应该是

solo_test( "", (){
  List<String> lines = ["aa=1", "bb=2" ,"cc=3"];

  String line = lines.firstWhere((String line) => line.indexOf("bb") == 0, orElse: () => throw "could not find 'bb'");
  expect( line, equals( "bb=2"));
});

答案 1 :(得分:1)

使用此行

(String line) => line.indexOf("bb") == 0

找到第二个元素,因此不执行orElse。 正如@Robert所说,你需要添加() =>