美文网首页
Dart线程模型及异常捕获

Dart线程模型及异常捕获

作者: 愿你我皆是黑马 | 来源:发表于2021-08-04 23:55 被阅读0次

单线程

以类似JS的,单线程中是以消息循环机制来运行的。包含一个微任务队列 ,和一个事件队列。微任务队列的执行优先级高于事件队列。



Dart线程运行过程

main() 执行后,启动消息循环机制。按照先进先出的顺序执行微任务队列和事件任务队列中的任务,执行完毕后程序便会退出。
在Dart中,微任务通常来源于Dart内部。所有的外部事件任务都在事件队列中,如IO、计时器、点击、以及绘制事件等。
可以通过Future.microtask(…)方法向微任务队列插入一个任务。
添加事件

new Future(() {
  // 事件任务
});

5秒后添加一个事件

//如果该任务前面有其它任务执行,则实际该任务被执行的时间会大于5秒
new Future.delayed(const Duration(seconds:5), () {
  // 事件任务
});
new Future(() => doTask) // 执行异步任务
    .then((result1) => doChildTask1(result1)) // doTask执行完后的子任务,result为上个任务doTask的返回值
    .then((result2) => doChildTask2(result2)) // doChildTask1执行完后的子任务,result为上个任务doChildTask1的返回值
    .whenComplete(() => doComplete); // 当所有任务完成后的回调函数

Dart异常捕获

在队列中的任务执行时,当某个任务发生异常并没有被捕获时,并不会退出,而是当前任务的后续代码不会执行,一个任务的异常是不会影响其它任务的。
所以如下的异常时捕获不到的


捕获所有异常

相关文章

  • Dart

    Dart线程模型及异常捕获 Flutter 实战 Dart的内存回收机制 Dart GC

  • Flutter异常捕获处理

    本文内容非原创, 仅用于整理记录原文链接?: flutter 崩溃收集 Dart线程模型及异常捕获 Flutter...

  • Dart线程模型及异常捕获

    单线程 以类似JS的,单线程中是以消息循环机制来运行的。包含一个微任务队列 ,和一个事件队列。微任务队列的执行优先...

  • Dart单线程模型

    java和OC都是多线程模型编程语言,任意一个线程异常且没有捕获时,整个进程推出,但dart和Javascript不会

  • Flutter/Dart - 异常捕获详解

    前言 在介绍Flutter异常捕获之前必须先了解一下Dart单线程模型,只有了解了Dart的代码执行流程,我们才能...

  • Dart语言 4 异常和类

    异常 Dart代码可以抛出并捕获异常。如果未捕获异常,则会引发程序终止 与Java相比,Dart的所有异常都是未经...

  • dart 异常

    dart中的异常 异常处理 抛出异常 异常捕获

  • Dart-异常、导包

    异常: dart会抛出并捕获异常,如果没捕获异常,就会中断程序运行 Exception、Error Throw 抛...

  • Java多线程: 如何捕获多线程中的异常

    你处理过多线程中异常吗?如何捕获多线程中发生的异常?捕获子线程的异常与捕获当前线程的异常一样简单吗? 除了try ...

  • Flutter异常捕捉原理和异常上报

    Flutter线程模型/事件机制在介绍Flutter异常捕捉原理之前,先说明一下Dart的模型。方便我们了解Dar...

网友评论

      本文标题:Dart线程模型及异常捕获

      本文链接:https://www.haomeiwen.com/subject/bggvvltx.html