网站开发的设计思路微信公众平台小程序是什么

news/2025/9/23 1:15:18/文章来源:
网站开发的设计思路,微信公众平台小程序是什么,网络规划设计师报考,北京朝阳区房价2022最新价格简介#xff1a;应用性能稳定是良好用户体验中非常关键的一环#xff0c;为了更好保障应用性能稳定#xff0c;异常捕获在保证线上产品稳定中扮演着至关重要的角色。我们团队在推出了U-APM移动应用性能监控的产品后#xff0c;帮助开发者定位并解决掉很多线上的疑难杂症。随…简介应用性能稳定是良好用户体验中非常关键的一环为了更好保障应用性能稳定异常捕获在保证线上产品稳定中扮演着至关重要的角色。我们团队在推出了U-APM移动应用性能监控的产品后帮助开发者定位并解决掉很多线上的疑难杂症。随着使用人数的增多关注度的提高在拜访客户和开发者的留言中很多开发者都提出希望该产品可以支持flutter框架的异常捕获。本身我并没有做过flutter开发所以主要是通过在现有产品能力基础上做插件实现异常的上报这篇文章就记录我学习flutter错误处理的过程和遇到的问题。 作者友盟技术专家 彦克 一、背景 应用性能稳定是良好用户体验中非常关键的一环为了更好保障应用性能稳定异常捕获在保证线上产品稳定中扮演着至关重要的角色。我们团队在推出了U-APM移动应用性能监控的产品后帮助开发者定位并解决掉很多线上的疑难杂症。随着使用人数的增多关注度的提高在拜访客户和开发者的留言中很多开发者都提出希望该产品可以支持flutter框架的异常捕获。本身我并没有做过flutter开发所以主要是通过在现有产品能力基础上做插件实现异常的上报这篇文章就记录我学习flutter错误处理的过程和遇到的问题。 二、Flutter异常 Flutter 异常指的是Flutter 程序中 Dart 代码运行时意外发生的错误事件。 三、Flutter异常特点 Dart是单进程机制所以在这个进程中出现问题时仅仅会影响当前进程Dart 采用事件循环的机制来运行任务当某个任务发生异常并没有被捕获时程序并不会退出而直接导致的结果是当前任务的后续代码就不会被执行了也就是说一个任务中的异常是不会影响其它任务执行的各个任务的运行状态是互相独立的。 如我们可以通过与 Java 类似的 try-catch 机制来捕获它。但与 Java 不同的是Dart 程序不强制要求我们必须处理异常。 四、Flutter异常分类 在Flutter开发中根据异常来源的不同可以将异常分为Framework异常和App异常。Flutter对这两种异常提供了不同的捕获方式Framework异常是由Flutter框架引发的异常通常是由于错误的应用代码造成Flutter框架底层的异常判断引起的。而对于App异常就是应用代码的异常通常由未处理应用层其他模块所抛出的异常引起。根据异常代码的执行时序App 异常可以分为两类即同步异常和异步异常。 五、捕获方式 1.App 异常的捕获方式 捕获同步异常使用try-catch 机制 // 使用 try-catch 捕获同步异常 try { throw StateError(This is a Dart exception.); } catch(e) { print(e); } 捕获异步异常使用Future 提供的 catchError 语句 // 使用 catchError 捕获异步异常 Future.delayed(Duration(seconds: 1)) .then((e) throw StateError(This is a Dart exception in Future.)) .catchError((e)print(e)); 看到这里估计很多人心里会问就不能有一种方式既可以监控同步又可以监控异步异常吗 答案是有的。 Flutter 提供了 Zone.runZoned 方法来管理代码中的所有异常。我们可以给代码执行对象指定一个Zone在 Dart 中Zone 表示一个代码执行的环境范围其概念类似沙盒不同沙盒之间是互相隔离的。如果我们想要观察沙盒中代码执行出现的异常沙盒提供了 onError 回调函数拦截那些在代码执行对象中的未捕获异常。废话不多说 Show me the code runZoned(() { // 同步异常 throw StateError(This is a Dart exception.); }, onError: (dynamic e, StackTrace stack) { print(Sync error caught by zone); }); runZoned(() { // 异步异常 Future.delayed(Duration(seconds: 1)) .then((e) throw StateError(This is a Dart exception in Future.)); }, onError: (dynamic e, StackTrace stack) { print(Async error aught by zone); }); 为了能够集中捕获 Flutter 应用中的未处理异常最终我把main函数中的 runApp 语句也放置在 Zone 中。这样在检测到代码中运行异常时就能根据获取到的异常上下文信息进行统一处理了 runZoned(() async { runApp(MyApp()); }, onError: (error, stackTrace) async { //Do sth for error }); 2.Framework异常捕获方式 Flutter 框架为我们在很多关键的方法进行了异常捕获。如果我们想自己上报异常只需要提供一个自定义的错误处理回调即可如 void main() { FlutterError.onError (FlutterErrorDetails details) { reportError(details); }; ... } 有没有一套从天而降的代码能够统一处理以上异常呢 3.总结一套代码捕获所有异常 runZonedGuarded(() async { WidgetsFlutterBinding.ensureInitialized(); FlutterError.onError (FlutterErrorDetails details) { myErrorsHandler.onError(details.exceptiondetails.stack); }; runApp(MyApp()); }, (Object error, StackTrace stack) { myErrorsHandler.onError(error, stack); }); 代码中出现了一句上诉从没有出现过的代码即WidgetsFlutterBinding.ensureInitialized()当我把这行代码注释掉的时候框架异常是捕获不到的。 当时困扰了好久最后终于查到了原因 上图是Flutter的架构层WidgetFlutterBinding用于与 Flutter 引擎交互。 我们的APM产品需要调用 native 代码来初始化并且由于插件需要使用平台 channel 来调用 native 代码这是异步完成的因此必须调用ensureInitialized()确保你有一个 WidgetsBinding 的实例. 来自 docs : Returns an instance of the WidgetsBinding, creating and initializing it if necessary. If one is created, it will be a WidgetsFlutterBinding. If one was previously initialized, then it will at least implement WidgetsBinding. 注如果你的应用在runApp 中调用了 WidgetsFlutterBinding.ensureInitialized() 方法来进行一些初始化操作则必须在runZonedGuarded中调用WidgetsFlutterBinding.ensureInitialized() 六、异常上报 异常上报的整体方案是通过已有的插件增加接口桥接Android APM 和 iOS APM库的自定义异常上报接口。 插件增加函数 static void postException(error, stack) { List args [error,stack]; //将异常和堆栈上报至umapm _channel.invokeMethod(postException,args); } Android 端调用自定义异常上报 private void postException(List args){ String error (String)args.get(0); String stack (String)args.get(1); UMCrash.generateCustomLog(stack,error); } iOS端调用自定义异常上报 if ([postException isEqualToString:call.method]){ NSString* error arguments[0]; NSString* stack arguments[1]; [UMCrash reportExceptionWithName:Flutter reason:error stackTrace:stack terminateProgram:NO]; } 以上就是本期干货内容的介绍希望我们的技术内容可以更好地帮助开发者们解决问题我们将陪伴开发者们一起进步一起成长。 原文链接 本文为阿里云原创内容未经允许不得转载。

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

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

相关文章

便宜的seo网站优化排名莆田网站建设培训

21 | 中间件:掌控请求处理过程的关键如果在 Map 的时候逻辑复杂一点,不仅仅判断它的 URL 地址,而且要做特殊的判断的话,可以这么做把判断逻辑变成一个委托我们要判断当我们的请求地址包含 abc 的时候,输出 new abcapp.…

商会网站的建设周浦网络网站建设公司

为什么需要代理模式 比如现在项目经理有一个需求:在项目现有所有类的方法前后打印日志。如何实现? 静态代理 interface SmsService {void send(String message); }class SmsServiceImpl implements SmsService {public void send(String message) {Sys…

广东金东建设工程公司网站asp网站开发pdf

简单手写SpringIOC框架 环境搭建基于XML方式项目结构项目代码运行结果 基于注解方式项目结构项目代码运行结果 简单手写SpringIOC框架核心原理基于XML方式原理项目结构项目代码运行结果 基于注解方式原理项目结构项目代码运行结果 环境搭建 基于XML方式 项目结构 项目代码 p…

陕西建设厅网站人才库外包人力资源公司

一、GAN原理 出发点:机器学习中生成模型的问题 无监督学习是机器学习和未来人工智能的突破点,生成模型是无监督学习的关键部分 特点: 不需要MCMC或者变分贝叶斯等复杂的手段,只需要在G和D中对应的多层感知机中运行反向传播或者…

郑州网站设计网站宝安做网站的公司

头文件如://#include //包含库函数............//............_nop_(); //引用库函数敬礼。我一直都是借助仿真软件编。一点一点试时间。C语言最大的缺点就是实时性差,我在网上到看了一些关于延时的讨论,其中有篇文章51单片机 Keil C 延时程序的简单研究,…

ps制作博客网站界面网上做问卷报酬不错的网站是

ZAB协议 ZAB协议是如何实现操作地顺序性的? 如果用一句话解释ZAB协议到底是什么,我觉得它是能保证操作顺序性的、基于主备模式的原子广播协议。 接下来,还是以指令X、Y为例具体演示一下,帮助你更好地理解为什么ZAB协议能实现操作…

测试测试测试测试测试

欢迎使用 OpenWrite 开始写作您的文章... 这是一个二级标题 您可以使用 Markdown 语法:粗体文字 斜体文字 行内代码// 代码块示例 console.log(Hello OpenWrite!);这是一个引用块链接示例

Day008 循环结构与breakcontinue - Java流程控制

Day008 循环结构与break&continue - Java流程控制$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");Java流程控制 循环结构 (1)while循环while是最基本的…

com域名和网站wordpress顶部提示

FOTA模块中OTA的知识点:1.测试过程中发现哪几类问题? 可能就是一个单键的ecu,比如升了一个门的ecu,他的升了之后就关不上,还有就是升级组合ecu的时候,c屏上不显示进度条。 2.在做ota测试的过程中&#xff…

模板网站的好处网络营销方案策划论文

中霖教育怎么样?中霖教育好吗? 中霖教育包括师资力量、课程设置、教学方法等都是经过不断完善来制定的,我们拥有专业且经验丰富的师资队伍,在教学过程中更注重个性化教学方式,针对每个学员的需求和学习情况制定专属的学习计划。 无论是在…

广西区建设厅网站小制作的制作过程

Posix在线文档: The Single UNIX Specification, Version 2 (opengroup.org) Linux系统中提供了两种不同接口的消息队列: POSIX消息队列。POSIX为可移植的操作系统接口。System V消息队列。System V 是 AT&T 的第一个商业UNIX版本(UNIX System III)的…

呼和浩特 的网站建设上海专业网站建设网

这是记录前端面试的话术集锦第十五篇博文——高频考点(React常考进阶知识点),我会不断更新该博文。❗❗❗ 1. HOC 是什么?相比 mixins 有什么优点? 很多人看到高阶组件(HOC)这个概念就被吓到了,认为这东西很难,其实这东西概念真的很简单,我们先来看一个例子: func…

如何做一名合格的网站人静态网页设计与制作

🌈个人主页:SKY-30 ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 &…

建立网站大概需要多长时间丹阳火车站片区规划

非类型模板参数 模板参数分为类型形参与非类型形参 。 类型形参即:出现在模板参数列表中,跟在 class 或者 typename 之类的参数类型名称 。 非类型形参,就是用一个常量作为类 ( 函数 ) 模板的一个参数,在类 ( 函数 ) 模板中可将…

网站专题怎么做呢广州页面制作公司

从 NS-10M 监听音箱到 MSP 系列和 HS 系列,雅马哈始终秉持忠实的设计理念,聚焦声学精度,为音频专家提供出色的平台,构建并成就他们专属的专业之声。MT7录音室监听耳机承袭了这一基本研发理念,重现最为精细的声音,力求满…

capacitor的android项目接入穿山甲遇到的坑

Caused by: java.lang.ClassNotFoundException: Didnt find class "com.bytedance.sdk.openadsdk.TTFileProvider" on path: DexPathList[[zip file "/data/app/~~Ol1vZKiGBPJT4eFuTS5Zyw==/org.capaci…

网站建设的看法有哪些后端和前端哪个前景好

一.四种模型 阻塞式IO,非阻塞式IO,信号驱动IO,IO多路复用 二.阻塞式IO 特点:最简单,最常用,效率低 阻塞I/O 模式是最普遍使用的I/O 模式 系统默认状态,套接字建立后所处于的模式就是阻塞I/O 模式…

网站建设运营策划方案建站行业乱象完整版

文章目录 0 引入1、带有标尺的温度/湿度计控件1.头文件2.核心代码 2、竖起来的温度/湿度计控件1.头文件2.实现 3、引用 0 引入 QT原生控件没有实现如仪表盘或者温度计的控件,只好自己实现,文章代码部分参考引用的文章。直接上图 图一 带有标尺的温度计…

新建网站的步骤阿里云搜索引擎入口

目录 前言 一、fsck命令 1、HDFS副本块数量的配置 2、fsck命令查看文件的副本数 3、block配置 二、NameNode元数据 1、edits文件 2、fsigame文件 3、NameNode元数据管理维护 4、元数据合并控制参数 5、SecondaryNameNode的作用 三、HDFS数据的读写流程 1、数据写入…