打代码怎么做网站线上推广平台有哪些

news/2025/9/22 22:39:57/文章来源:
打代码怎么做网站,线上推广平台有哪些,北京建站系统模板,如何建设自己的网站来获取流量文章目录 传统的处理错误的方式C异常C异常的使用抛异常的举例异常的重新抛出异常规范 自定义异常体系C标准库中的异常体系异常的优缺点 本篇总结的是C中关于异常的内容 传统的处理错误的方式 在C语言中#xff0c;对于传统的错误方式有 终止程序#xff1a;例如assert异常C异常的使用抛异常的举例异常的重新抛出异常规范 自定义异常体系C标准库中的异常体系异常的优缺点 本篇总结的是C中关于异常的内容 传统的处理错误的方式 在C语言中对于传统的错误方式有 终止程序例如assert但是问题在于有些过于暴力了直接会终止程序返回错误码检查错误不太方便需要去查找错误成本比较高 C异常 因此针对这种情况C新增了异常的概念异常是一种处理错误的方式当一个函数发现自己无法处理的错误的时候就可以抛出异常让函数直接或间接的让调用者来处理这个错误 throw当问题出现的时候会抛出异常这是throw关键字来表示的catch当有需要处理的问题时catch用于捕获这个异常可以有多个catch进行捕获trytry当中的代码标识将被激活的特定异常在它的后面会跟着catch用于异常捕获 C异常的使用 抛出和匹配原则 异常是抛出对象抛出的因此这个对象的类型决定了要如何catch这个异常被选中的处理代码是调用链中的与该对象匹配且离异常位置最近的那个抛出异常对象后会生成一个异常对象的拷贝因为抛出的异常对象可能是一个临时对象所以会生成一个拷贝对象这个拷贝的临时对象会在catch后销毁有些类似于传值返回实际中的抛出和捕获也有例外比如抛出派生类对象可以用基类捕获多态的原理 在函数调用链中异常栈展开匹配原则 首先检查throw本身是否在try块内部如果是再查找匹配的catch语句。如果有匹配的则调到catch的地方进行处理没有匹配的catch则退出当前函数栈继续在调用函数的栈中进行查找匹配的catch如果到达main函数的栈依旧没有匹配的则终止程序。上述这个沿着调用链查找匹配的catch子句的过程称为栈展开。所以实际中我们最后都要加一个catch(...)捕获任意类型的异常否则当有异常没捕获程序就会直接终止找到匹配的catch子句并处理以后会继续沿着catch子句后面继续执行 抛异常的举例 void div1(int x, int y) {if (y 0){throw 除0错误;}else{cout x / (double)y endl;} }int main() {int x 0, y 0;cin x y;try{div1(x, y);}catch(const char* str){cout str endl;}return 0; }异常的重新抛出 在实际的使用中可能会遇到单个的catch不能处理一个异常需要把这个异常再次进行抛出所以catch是可以重新抛出给更上层的函数的 举个例子比如下面的场景 void div1(int x, int y) {int* p new int[10];if (y 0){throw 除0错误;}else{cout x / (double)y endl;delete[] p;cout delete[] endl;} }如果只是这样单纯的抛异常那么对于p所指向的这段空间就得不到释放在实际的开发中这种内存泄漏是十分严重的情景因此处于这种原因可以在重新抛出异常 double Division(int a, int b) {// 当b 0时抛出异常if (b 0){throw Division by zero condition!;}return (double)a / (double)b; } void Func() {int* array new int[10];try {int len, time;cin len time;cout Division(len, time) endl;}catch (...){cout delete [] array endl;delete[] array;throw;}// ...cout delete [] array endl;delete[] array; } int main() {try{Func();}catch (const char* errmsg){cout errmsg endl;}return 0; }这样无论在什么情况下都可以既能释放内存又能保证异常正常的抛出和接收了 异常规范 异常规格说明的目的是为了让函数使用者知道该函数可能抛出的异常有哪些可以在函数的后面加一个throw(类型)来说明这个函数可能抛出的所有异常类型如果只是加一个throw则表示函数不抛异常若没有无异常接口声明则此函数可以抛任何类型的异常 自定义异常体系 在实际的开发过程中异常体系是需要被自定义出来的因此会提前定义一套继承的规范体系抛出的都是继承的派生类对象只需要捕获一个基类就可以了 // 服务器开发中通常使用的异常继承体系 // 定义了一个异常基类 class Exception { public:Exception(const string errmsg, int id):_errmsg(errmsg), _id(id){}// 可以在外部显示的查看错误信息是什么virtual string what() const{return _errmsg;} protected:// 通常包括有异常信息和抛出异常所对应的id号码string _errmsg;int _id; };// 由基类异常继承而来的数据库异常 class SqlException : public Exception { public:SqlException(const string errmsg, int id, const string sql):Exception(errmsg, id), _sql(sql){}// 对基类中的输出信息进行对应的改造使得输出对应的错误信息virtual string what() const{string str SqlException:;str _errmsg;str -;str _sql;return str;} private:// 在数据库异常中新增了和数据库有关的信息const string _sql; };// 缓存区异常 class CacheException : public Exception { public:CacheException(const string errmsg, int id):Exception(errmsg, id){}virtual string what() const{string str CacheException:;str _errmsg;return str;} };// web服务器异常 class HttpServerException : public Exception { public:HttpServerException(const string errmsg, int id, const string type):Exception(errmsg, id), _type(type){}virtual string what() const{string str HttpServerException:;str _type;str :;str _errmsg;return str;} private:const string _type; };// 模拟数据库中的命令 void SQLMgr() {srand(time(0));if (rand() % 7 0){throw SqlException(权限不足, 100, select * from name 张三);} }void CacheMgr() {srand(time(0));if (rand() % 5 0){throw CacheException(权限不足, 100);}else if (rand() % 6 0){throw CacheException(数据不存在, 101);}SQLMgr(); }void HttpServer() {srand(time(0));if (rand() % 3 0){throw HttpServerException(请求资源不存在, 100, get);}else if (rand() % 4 0){throw HttpServerException(权限不足, 101, post);}CacheMgr(); }int main() {while (1){this_thread::sleep_for(chrono::seconds(1));try {HttpServer();}catch (const Exception e){cout e.what() endl;}catch (...){cout Unkown Exception endl;}}return 0; }这样就能把错误信息统一的放置到一个日志中方便进行查看哪部分内容可能会出现错误 C标准库中的异常体系 异常的优缺点 优点 异常对象定义好了相比错误码的方式可以清晰准确的展示出错误的各种信息甚至可以包含堆栈调用的信息这样可以帮助更好的定位程序的bug返回错误码的传统方式有个很大的问题就是在函数调用链中深层的函数返回了错误那么我们得层层返回错误最外层才能拿到错误很多的第三方库都包含异常比如boost、gtest、gmock等等常用的库那么我们使用它们也需要使用异常部分函数使用异常更好处理比如构造函数没有返回值不方便使用错误码方式处理。比如T operator这样的函数如果pos越界了只能使用异常或者终止程序处理没办法通过返回值表示错误 缺点 异常会导致程序的执行流乱跳并且非常的混乱并且是运行时出错抛异常就会乱跳。这会导致我们跟踪调试时以及分析程序时比较困难异常会有一些性能的开销。当然在现代硬件速度很快的情况下这个影响基本忽略不计C没有垃圾回收机制资源需要自己管理。有了异常非常容易导致内存泄漏、死锁等异常安全问题。这个需要使用RAII来处理资源的管理问题。学习成本较高C标准库的异常体系定义得不好导致大家各自定义各自的异常体系非常的混乱异常尽量规范使用否则后果不堪设想随意抛异常外层捕获的用户苦不堪言。所以异常规范有两点一、抛出异常类型都继承自一个基类。二、函数是否抛异常、抛什么异常都使用func throw();的方式规范化

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

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

相关文章

part 8

T1 普通的二分+贪心 T2 定义 \(f_{i,j,k}\) 表示考虑完前 \(i\) 个节点,有 \(j\) 棵树,前 \(i\) 个节点还缺少 \(k\) 个儿子,每次转移钦定 \(i\) 的儿子数量即可

【本地音乐库】的搭建管理工具推荐

下载Gomusic:提取歌单目录我一般复制贴到 flowus 或者 notion 之类的笔记软件,全选改为待办块,下载一首check一个。还可以转为多维表,检索关键词可批量check同个歌手。MP3搜集:知名度高的流行歌很好找,XX音乐网一…

扭曲变形验证码的图像处理与识别思路

为了进一步防止自动化程序,很多验证码会在字符上加入波浪形扭曲或旋转变形。这种验证码的难点在于:字符形状被严重改变,传统 OCR 在未经校正的情况下几乎无法识别。本文将介绍一种基于几何校正与投影分析的识别流程…

专业汽车网站东营网站建设入门

I/O设备模型 绝大部分的嵌入式系统都包括一些I/O(Input/Outut,输入/输出)设备,例如仪器上的数据显示屏、工业设备上的串口通信、数据采集设备上用于保存数据的Flash或SD卡,以及网络设备的以太网接口等。 I/O设备模型…

创新的网站建站企业宣传片拍摄公司

CF785D Anton and School - 2 题意: 给定一个长度≤210^5由(和)组成的字符串,问有多少个子串(可以不连续),前半部分是由(组成后半部分由)组成. 题解: 怎么括号匹配能出这么多题 如何才能不重不漏的选出…

常用的seo查询工具济宁网站建设优化亿峰

1、问题 Android Studio debug调试项目卡在waiting for debugger界面2、解决办法 一开始从启adb服务adb stop-server adb start-server 发现没什么用,然后呢,估计是很多app再运行,然后我就重启了Android studio,问题就解决了如果要是万一还不…

网站 演示代码中国目前最好的搜索引擎

理解线程同步线程的数据访问在并行(多线程)环境中,不可避免地会存在多个线程同时访问某个数据的情况。多个线程对共享数据的访问有下面3种情形:多个线程同时读取数据;单个线程更新数据,此时其他线程读取数据…

微信网页版公众号网站怎么做武夷山网站建设wzjseo

自然语言处理(Natural Language Processing,简称NLP)是计算机科学与语言学中关注于计算机与人类语言间转换的领域。 1. 文本预处理 文本预处理详情 4. RNN模型

ih5做自适应网站淮安企业网站制作

深度优先搜索(Depth-First-Search) 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”。 其实称为“远度优先搜索”…

做网站要哪些人员佳木斯建设局网站

经过无数次的实验,最终配置了一套比较舒服的主题,审美在不断的提高,但是内在快跟不上了哈 1. 安装主题 先下载资源包,资源包是收费的,算是犒赏吧。 https://download.csdn.net/download/wf19930209/23520618 1.1 更…

网站建设设计费用摊销年限运营实力 网站建设

目录 3.1 情况一:两个表数据一一对应 3.2 情况二:两个表数据并非一一对应 本专栏关于联合查询已建立相应库与表,原文链接如下: 【MySQL】_联合查询基础表-CSDN博客 内连接原文如下: 【MySQL】_内连接-CSDN博客 基…

AI 写代码 “翻车”?人类程序员 “偷笑”?AI能应对我们的问题吗?人工智能到底是“智能”还是“人工”?真相有点意思!

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

每日收获

今天的JAVA主要表达了一个编程思想-分解,并重写编写课程测试题.接下来,准备找<<程序员精炼之道,从小工到专家>>,并完成一部分作业.

网站外包维护一年多少钱做网站需要具备哪些条件

文章目录 复盘与一周总结2967. 使数组成为等数数组的最小代价&#xff08;中位数贪心 回文数判断&#xff09;2968. 执行操作使频率分数最大&#xff08;中位数贪心 前缀和 滑窗&#xff09; 复盘与一周总结 wa穿了第3题&#xff0c;赛时其实想到了思路&#xff1a;中位数贪心…

C++中std::map容器中元素删除方法汇总 - 详解

C++中std::map容器中元素删除方法汇总 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

物理半程与半时问题

本文旨在深入解析匀变速直线运动中常见的“半程问题”和“半时问题”,通过公式推导、多种方法比较以及物理意义的阐释,帮助你理解两者在平均速度上的差异及其内在原因。物理半程与半时问题 本文旨在深入解析匀变速直…

网站展现形式网站seo优化课程

一.简单实例&#xff1a; 1.实例要求 点击按钮&#xff0c;实现 >o<与#-#的转换。 2.步骤 补充&#xff1a;​​​​​​​ 1.如果我想在lambda中修改数据&#xff0c;怎么办&#xff1f; 写上mutable就行。

加盟网站做推广怎么收费营销型网站建设制作推广

文章目录 1. 前言2. 错误情况3. 解决办法3.1 获取gradle下载地址3.2 获取gradle存放目录3.3 替换并删除临时文件3.4 触发Try Again 4. 执行成功 1. 前言 今天调试项目&#xff0c;发现新装的AS&#xff0c;在下载gradle的过程中&#xff0c;一直显示连接失败&#xff0c;Gradl…

成都网站建设设计公司上海网站建设 劲晟

Innodb引擎Innodb引擎提供了对数据库ACID事务的支持&#xff0c;并且实现了SQL标准的四种隔离级别。该引擎还提供了行级锁和外键约束&#xff0c;它的设计目标是处理大容量数据库系统&#xff0c;它本身其实就是基于MySQL后台的完整数据库系统&#xff0c;MySQL运行时Innodb会在…

信息门户网站制作费用辽宁省建设厅网站升级

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;Gartner公司已列出了2019年及以后影响平台即服务&#xff08;PaaS&#xff09;技术和平…