Flutter开发进阶之错误信息

news2024/11/17 19:18:47

Flutter开发进阶之错误信息

在Flutter开发中错误信息通常是由Exception和Error表示,Error表示严重且不可恢复的错误,一般会导致程序直接终止,而Exception可以被显式抛出,一般为代码逻辑错误,根据Flutter的解释说Exception为异常而Error为错误。
本文将通过源码和实际操作来比较Exception和Error的异同。
Flutter开发进阶

介绍比对

('flutter:keep-to-string-in-subtypes')
abstract interface class Exception

('flutter:keep-to-string-in-subtypes')
class Error

@pragma('flutter:keep-to-string-in-subtypes') 是一个特殊的注解(annotation),它用于指导Flutter的Dart编译器在编译时保留某些类型信息。
具体来说,这个注解是为了确保当类型被用作其他类型的子类型时,其字符串表示形式(通常是类型名称)会被保留在生成的代码中。
Exception是一个抽象类,一般需要通过指定的类型去使用,例如

class FormatException implements Exception

处理的是字符串类型的异常。
Exception还有

("Use UnsupportedError instead")
class IntegerDivisionByZeroException implements Exception, UnsupportedError

现已废弃,开始采用UnsupportedError

对于Error,源码中的注释相对于Exception要严重的多,程序员应该避免其出现在测试以外。
其类型有

class AssertionError extends Error

class TypeError extends Error

class ArgumentError extends Error

class RangeError extends ArgumentError

class IndexError extends ArgumentError implements RangeError

class NoSuchMethodError extends Error

("vm:entry-point")
class UnsupportedError extends Error

class UnimplementedError extends Error implements UnsupportedError

class ConcurrentModificationError extends Error

final class OutOfMemoryError implements Error

final class StackOverflowError implements Error

名称很直白,很容易就知道具体是什么错误。

使用比对

    try {
      ///
    } on FormatException {
      ///
    } catch(e, s) {
      ///
    } finally {
      ///
    }

通过try可以执行一些可能抛出异常的方法,可以通过on可以对指定类型的异常进行对应处理,catch会收到对应的错误,无论代码是否异常最后都会执行finally
FormatException还可以自定义类型,比如我们在进行数据请求时就是通过自定义异常类型去处理异常。
可以通过throw const FormatException('xxxxx');主动抛出异常,还可以通过rethrow;进行异常重抛。
异常的收集需要在WidgetsFlutterBinding.ensureInitialized()执行之后。
主动抛出的错误也是可以通过throw来执行,对于Flutter的错误可以通过

    FlutterError.onError = (e) {
      FlutterError.presentError(e);
    };

来收集。
对于异步的错误可以通过

  PlatformDispatcher.instance.onError = (error, stack) {
    myBackend.sendError(error, stack);
    return true;
  };

来收集,或者通过

R? runZonedGuarded<R>(R body(), void onError(Object error, StackTrace stack),
    {Map<Object?, Object?>? zoneValues, ZoneSpecification? zoneSpecification})

来处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1573687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于单片机放大电路程控放大特性参数设计

**单片机设计介绍&#xff0c;基于单片机放大电路程控放大特性参数设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机放大电路程控放大特性参数设计是一个结合了单片机编程和放大电路技术的综合性项目。以下是对该设计项目的概…

qgis加载天地图

一、点击Tile Server (XYZ)&#xff0c;选择New Connection 二、在弹出的输入框中输入天地图的url 此处以影像底图为例&#xff0c;url为http://t0.tianditu.gov.cn/img_w/wmts?SERVICEWMTS&REQUESTGetTile&VERSION1.0.0&LAYERimg&STYLEdefault&TILEMATR…

浅析智能数据采集技术在数字化转型中的核心作用|电商数据采集API接口的核心应用

随着科技的飞速发展和全球化的深入推进&#xff0c;数字化转型已经成为企业和社会发展的必然趋势。在这一背景下&#xff0c;智能数据采集技术作为数字化转型的核心驱动力&#xff0c;正发挥着越来越重要的作用。本文将从智能数据采集技术的定义、特点、应用场景以及对企业的影…

京东云服务器幻兽帕鲁4核16G/8核32G配置价格和选择攻略

京东云幻兽帕鲁Palworld游戏多人联机服务器&#xff0c;配置可选4核16G、4核32G、8核32G、16C64G&#xff0c;京东云幻兽帕鲁服务器优惠价格26元1个月起&#xff0c;可购买1个月、3个月、6个月和一年时长&#xff0c;云服务器吧yunfuwuqiba.com整理京东云幻兽帕鲁服务器配置价格…

【话题】如何看待那些速成并精通软件书籍的神器

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景1. 神话与现实1.1 理论与实践之间的鸿沟1.2 一劳永逸的错觉 2. 速成书籍的优势与局限2.1 优势&#xff1a;2.2 局限&#xff1a; 3. 如何有效利用速成书籍3.1 量力而…

机器学习(五) -- 监督学习(3) -- 朴素贝叶斯

系列文章目录及链接 目录 前言 一、朴素贝叶斯通俗理解及定义 二、原理理解及公式 1、概率基础 2、贝叶斯公式 3、拉普拉斯平滑系数 三、**算法实现 四、接口实现 1、新闻数据集介绍 2、API 3、流程 3.1、获取数据 3.2、数据预处理 3.3、特征工程 3.4、朴素贝叶…

芯课堂 | JScope虚拟示波器使用说明

​1. 首先需要安装Jlink的驱动&#xff0c;即安装JLink_Windows_V634e之后才能安装JScope&#xff0c;一般这个能正常使用Jlink下载、仿真说明你的Jlink驱动已经正常安装 2. 需要安装Jscope&#xff0c;即安装Setup_JScope_V611m&#xff0c;安装完成之后能看到以下画面 3. 新建…

TypeScript 泛型工具类型

文章目录 前言Partial(可选)代码解读 Readonly代码解读 Pick代码解读 Record代码解读 ---上面是常用的&#xff0c;下面是不常用的&#xff0c;需要的话往下看 ( 进阶 )---Required<T>&#xff1a;Required与Partial相反&#xff0c;作用是将所有属性变成必选属性&#x…

路径规划——曲线拟合详解(二):贝塞尔曲线、B样条曲线与QP优化( Fast-Planner算法核心部分)

1. 贝塞尔曲线 (1). 贝塞尔曲线的作用 贝塞尔曲线的作用是给定控制点&#xff0c;通过控制点生成对应的曲线进行轨迹拟合&#xff0c;输入为点&#xff0c;输出为受到控制点约束而产生的轨迹。 (2). 贝塞尔曲线的数学表达式 假设给定N个控制点&#xff0c;得到的为N-1阶的贝…

GA-SVM,基于GA遗传算法优化SVM支持向量机回归预测(多输入单输出)

基于遗传算法&#xff08;Genetic Algorithm, GA&#xff09;优化支持向量机&#xff08;Support Vector Machine, SVM&#xff09;用于回归预测是一个常见的任务。在这个任务中&#xff0c;我们使用GA来寻找SVM的最佳超参数配置&#xff0c;以最大化回归性能指标&#xff0c;例…

PyCharm使用指南(个性化设置、开发必备插件、常用快捷键)

&#x1f947;作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1 &#x1f525;本文已收录于Python系列专栏&#xff1a; 零基础学Python &#x1f4ac;订阅专栏后可私信博主进入Python学习交流群&#xff0c;进群可领取Python视频教程以及Python相关电子书合…

【Ambari】Ansible自动化部署大数据集群

目录 一&#xff0e;版本说明和介绍信息 1.1 大数据组件版本 1.2 Apache Components 1.3 Databases支持版本 二&#xff0e;安装包上传和说明 三&#xff0e;服务器基础环境配置 3.1global配置修改 3.2主机名映射配置 3.3免密用户名密码配置 3.4 ansible安装 四. 安…

虚幻引擎像素流源码解读

前言 假期在家把虚幻引擎像素流的源码有研究了一下&#xff0c;进行了一下总结&#xff0c;本文适合有一定使用虚幻引擎像素流经验的人阅读。 源码地址 这里研究的是UE5.1的版本&#xff0c;源码位置如下 C:\Program Files\Epic Games\UE_5.1\Engine\Plugins\Media\PixelStream…

AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)

AIGC实战——ProGAN 0. 前言1. ProGAN2. 渐进式训练3. 其他技术3.1 小批标准差3.2 均等学习率3.3 逐像素归一化 4. 图像生成小结系列链接 0. 前言 我们已经学习了使用生成对抗网络 (Generative Adversarial Network, GAN) 解决各种图像生成任务。GAN 的模型架构和训练过程具有…

pytest的时候输出一个F后面跟很多绿色的点解读

使用pytest来测试pyramid和kotti项目&#xff0c;在kotti项目测试的时候&#xff0c;输出一个F后面跟很多绿色的点&#xff0c;是什么意思呢&#xff1f; 原来在使用pytest进行测试时&#xff0c;输出中的“F”代表一个失败的测试&#xff08;Failed&#xff09;&#xff0c;而…

Spring源码分析(@Configuration)

文章目录 Spring源码分析&#xff08;Configuration&#xff09;一、ConfigurationClassPostProcessor1、主要作用和特点2、执行的时机3、BeanFactoryPostProcessor4、BeanDefinitionRegistryPostProcessor5、ConfigurationClassPostProcessor1&#xff09;postProcessBeanDefi…

ebpf+perfetto实现调度延迟记录与展示

1.背景 需要分析生产环境的调度问题,如线程的调度延迟有多少,在哪些时间点延迟比较明显,影响其调度的主要原因是什么?其次,我们希望可以比较直观的展示调度延迟情况。最好能对接perfetto的UI和后处理,因为perfetto已经用于分析比较多的性能数据,可以和调度数据进行整合.我们…

聚观早报 | 沃尔沃发布一季度全球销量;苹果将举办财报电话会议

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 4月07日消息 沃尔沃发布一季度全球销量 苹果将举办新财报电话会议 荣耀Magic6支持5.5G通信 特斯拉将建最大超级充…

【计算机网络经典面试题】简述 TCP 三次握手和四次挥手的过程

TCP链接 1.三次挥手2.四次挥手3.拓展说说 TCP 2次握手行不行&#xff1f;为什么要3次 1.三次挥手 1&#xff09;第一次握手&#xff1a;建立连接时&#xff0c;客户端向服务器发送SYN包&#xff08;seqx&#xff09;&#xff0c;请求建立连接&#xff0c;等待确认 2&#xff09…

基于Springboot的Java学习平台

采用技术 基于Springbootjava学习平台的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能模块 后台管理 用户注册 课程信息 作业信息 资料信息…