【问题标题】:why dart didn't throw compile-time mistype exception instead. of run-time?为什么 dart 没有抛出编译时错误类型异常。运行时?
【发布时间】:2020-03-14 19:42:59
【问题描述】:

考虑这个示例代码:

void main() {

  List<int> array = <int>[];

  for (int i = 0; i < 5; i++) {
    array.add(i);
  }

  Iterable<int> newList = array.where( (value) =>  value % 2 == 0 );

  printFunction(array);
  printFunction(newList);
}

void printFunction(List<int> list) {
 print(list); 
}

这段代码编译成功,但在运行时当然会抛出异常,因为它无法运行printFunction(newList)的代码,除非在传递newList之前调用toList()

为什么编译器在这种情况下没有抛出异常???

【问题讨论】:

    标签: flutter exception dart compile-time-type-checking


    【解决方案1】:

    可以通过 dart 分析器设置(analysis_options.yaml)启用这种检查,如下所示:

    analyzer:
      strong-mode:
        implicit-casts: false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2015-09-02
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多