C++:try catch语句用法
C++中try catch语句用法有非常灵活,有许多种组合;
这里简单介绍以下最基本的用法;
1. 格式
try{
...
}
catch{
...
}
try语句块是用来判断是否有异常;
catch语句块捕捉异常,并进行处理;
throw是抛出异常;
2. 看示例
首先通过一个简单的例子来熟悉C++ 的 try/catch/throw(可根据单步调试来熟悉,try catch throw部分是如何运行的):
#include <stdlib.h>
#include "iostream"
using namespace std;double fuc(double x, double y) //定义函数
{if(y==0){throw y; //除数为0,抛出异常}return x/y; //否则返回两个数的商
}int _tmain(int argc, _TCHAR* argv[])
{double res;try //定义异常{res=fuc(2,3);cout<<"The result of x/y is : "<<res<<endl;res=fuc(4,0); //出现异常}catch(double) //捕获并处理异常{cerr<<"error of dividing zero.\n";exit(1); //异常退出程序}return 0;
}
【注】:catch 的数据类型需要与throw出来的数据类型相匹配的。
catch(…)能够捕获多种数据类型的异常对象,所以它提供给程序员一种对异常对象更好的控制手段,使开发的软件系统有很好的可靠性。因此一个比较有经验的程序员通常会这样组织编写它的代码模块,如下:
void Func()
{try{// 这里的程序代码完成真正复杂的计算工作,这些代码在执行过程中// 有可能抛出DataType1、DataType2和DataType3类型的异常对象。}catch(DataType1& d1){}catch(DataType2& d2){}catch(DataType3& d3){}/*********************************************************注意上面try block中可能抛出的DataType1、DataType2和DataType3三种类型的异常对象在前面都已经有对应的catch block来处理。但为什么还要在最后再定义一个catch(…) block呢?这就是为了有更好的安全性和可靠性,避免上面的try block抛出了其它未考虑到的异常对象时导致的程序出现意外崩溃的严重后果,而且这在用VC开发的系统上更特别有效,因为catch(…)能捕获系统出现的异常,而系统异常往往令程序员头痛了,现在系统一般都比较复杂,而且由很多人共同开发,一不小心就会导致一个指针变量指向了其它非法区域,结果意外灾难不幸发生了。catch(…)为这种潜在的隐患提供了一种有效的补救措施。*********************************************************/catch(…){}
}
参考文章:
1. https://www.cnblogs.com/MrYuan/p/4800257.html 更多种用法
C++:try catch语句用法相关推荐
- C++ 异常,标准异常类,自定义异常类,throw,try,catch语句
要学习异常,首先就要学习throw和try,catch语句: C++中try catch语句用法有非常灵活,有许多种组合: 这里简单介绍以下最基本的用法: 1. 格式 try{ ... } catch ...
- try - catch语句的用法
try-catch 语句,作为 JavaScript 中处理异常的一种标准方式. try{ // 可能会导致错误的代码 } catch(error){ // 在错误发生时怎么处理 } 在try中如果有 ...
- Java中try catch语句的用法
在 Java 中通常采用 try catch 语句来捕获异常并处理.语法格式如下: try { 逻辑代码块1; } catch(ExceptionType e) { 处理代码块1; ...
- try()...catch()的用法
前面小括号中出现问题,文件流会自动关闭 摘自网友回复: 在stackoverflow偶尔看到的一个关于try()...catch()的用法,通常我们使用try...catch()捕获异常的,如果遇到类 ...
- try/catch的用法
参考原文:https://www.cnblogs.com/freshmen/p/4424667.html 1.try/catch用法基础介绍 try{//程序中抛出异常throw value;}cat ...
- js中try和catch的用法
js中try和catch的用法 版权声明:本文为@lyhh5原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明 原文链接:https://blog.csdn.net/l ...
- 错误与异常 之 try...catch语句
错误与异常 1.概念 错误,指程序中的非正常运行状态,在其它编程语言中称为"异常"或"错误".解释器会为每个错误情形创建并抛出一个Error对象,其中包含错误的 ...
- mysql select语句详解_mysql学习笔记之完整的select语句用法实例详解
本文实例讲述了mysql学习笔记之完整的select语句用法.分享给大家供大家参考,具体如下: 本文内容: 完整语法 去重选项 字段别名 数据源 where group by having order ...
- python的for语句用法_python中list循环语句用法实例
本文实例讲述了python中list循环语句用法.分享给大家供大家参考.具体用法分析如下: Python 的强大特性之一就是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个 ...
最新文章
- 为什么你用matplotlib savefig保存下来的图像是一个空白图片?
- Spring data jpa命名规范
- MongoDB 基础用法及学习笔记
- SAP BASIS顾问认知的一些误区
- python日期加减源码_Python 时间序列的时间延迟计算
- in 用不用索引_MySQL 索引最佳实践之问题反馈
- javax.cache_新的Java缓存标准(javax.cache)
- kitti数据集反代下载
- macOs 使用Homebrew升级到MySQL 8系列之后,php无法连接解决方法
- getCurrentSession与openSession的区别
- 容器与拷贝构造函数的问题
- Arch Linux下 让MPlayer用上CoreAVC1.7.0.0解码器
- 通过Jquery实现文本高亮及取消高亮
- 基于机会网络环境模拟器的命名数据容迟网络的设计与实现
- Diligent收购领先的批判性见解和分析SaaS提供商Insightia
- FreeRTOS任务切换过程深层解析
- 一个小屁孩对父母说的经典话
- Java WEB开发须知知识点---基础篇
- 如何将PPT转换成Excel表格?教大家一种转换小妙招
- 闪银奇异安全负责人:互金行业安全建设的四个心得