Throw表达式和try块的定义如下:

1. throw 表达式,错误检测部分使用这种表达式来说明遇到了不可处理的错误。可以说,throw 引发了异常条件。
2. try 块,错误处理部分使用它来处理异常。try 语句块以 try 关键字开始,并以一个或多个 catch 子句结束。在 try 块中执行的代码所抛出 (throw)的异常,通常会被其中一个 catch 子句处理。由于它们“处理” 异常,catch 子句也称为处理代码。
3. 由标准库定义的一组异常类,用来在 throw 和相应的 catch 之间传递有关的错误信息。

举个例子来说明是最好的方法:

bitset 类提供 to_ulong 操作,如果 bitset 提供的位数大于 unsigned long 的长度时,抛出一个overflow_error 异常。编写产生这种异常的程序。

代码如下:

 1 #include<iostream>
 2 #include<bitset>
 3
 4 using namespace std;
 5
 6 int main() {
 7     bitset<1000>bs;
 8
 9     for(int i = 0; i != bs.size(); i++) {
10         bs[i] = 1;
11     }
12
13     try {
14         bs.to_ulong();
15     }
16     catch (runtime_error err) {
17         cout << err.what()
18              << "\tWrong!"<< endl;
19     }
20
21 }

C++标准库定义了一组类,用于报告标准数据库中的函数遇到的问题。

在 <stdexcept> 头文件中定义的标准异常类

exception 最常见的问题。

runtime_error 运行时错误:仅在运行时才能检测到问题

range_error 运行时错误:生成的结果超出了有意义的值域范围

overflow_error 运行时错误:计算上溢

underflow_error 运行时错误:计算下溢

logic_error 逻辑错误:可在运行前检测到问题

domain_error 逻辑错误:参数的结果值不存在

invalid_argument 逻辑错误:不合适的参数

length_error 逻辑错误:试图生成一个超出该类型最大长度的对象

out_of_range 逻辑错误:使用一个超出有效范围的值

每一个标准库异常类都定义了名为 what 的成员函数。这个函数不需要参数,返回 C 风格字符串。

另外,new 头文件定义了 bad_alloc 异常类型,提供因无法分配内在而由 new抛出的异常。type_info 头文件定义了 bad_cast 异常类型。

转载于:https://www.cnblogs.com/hustcser/p/3666367.html

[010]Try块和异常处理相关推荐

  1. C++primer 第 5 章语句 5.2语句作用域 5.3条件语句 5 . 4 迭代语句 5.5跳转语句 5.6 try语句块和异常处理

    5 . 1 简单语句 C++语言中的大多数语句都以分号结束,一个表达式,比如ival + 5 , 末尾加上分号就变成了表达式语句(expression statement).表达式语句的作用是执行表达 ...

  2. c++try语句块和异常处理

    异常处理包括: 1.throw表达式:异常检测部分使用throw表达式来表示它遇到了无法处理的问题,我们说,throw引发了异常 2.try语句块:异常处理部分使用try语句块处理异常.try语句块以 ...

  3. C++之 try语句块和异常处理

    一.异常 异常是指存在于代码运行时的反常行为,这些反常行为超出了函数正常执行功能的范围,异常处理机制包括两部分的协同支持:异常检测和异常处理 二.C++中的异常处理 在c++语言中,异常处理包括: t ...

  4. plsql的异常提示怎么定位_PLSQL异常处理

    1.定义 异常:PL/SQL在执行的过程中所产生的标识符,PL/SQL中的一个警告或错误都被称为异常.错误通常分为两类: 编译时错误--一般是语法错误,由PL/SQL引擎发现并报告给用户,程序本身不能 ...

  5. Java中的异常处理

    在程序中,错误可能产生于程序员没有预料到的各种情况,或是超出了程序员可控范围的换将因素,Java在这种程序运行时可能出现的一些错误成为异常,异常是一个在程序执行期间发生的事件,它中断了正在执行的程序的 ...

  6. 【Java基础】异常处理与输入输出流

    finally中的代码执行时机 try{}语句中含有return,那么finally还会执行吗?如果会,那么是什么时候执行(return前还是return后) 在Java的异常处理中,不论什么情形,f ...

  7. JAVA SE学习day_06:字符流、异常处理

    一.字符流 java将流按照读写单位划分为字节流与字符流 字节流:超类为InputStream和OutputStream,读写单位为字节 字符流:超类为Reader和Writer,读写单位为cahr ...

  8. 关于 Java 中 finally 语句块的深度辨析

    可不能小看这个简单的 finally,看似简单的问题背后,却隐藏了无数的玄机.接下来我就带您一步一步的揭开这个 finally 的神秘面纱. 问题分析 首先来问大家一个问题:finally 语句块一定 ...

  9. C++Primer:Break、Continue、Goto、Try/异常处理

    1.break语句: break语句用于结束最近的while.do while.for.switch语句,并将程序的执行权传递给紧接在被终止语句之后的语句. <span style=" ...

  10. java 批量处理 示例_Java异常处理教程(包含示例和最佳实践)

    java 批量处理 示例 异常是可能在程序执行期间发生的错误事件,它会破坏其正常流程. Java提供了一种健壮且面向对象的方式来处理异常情况,称为Java异常处理 . 我们将在本教程中研究以下主题. ...

最新文章

  1. python下载代码-Python3----下载小说代码
  2. 高端第一后,卡萨帝又将靠场景化引领冰箱行业
  3. npm安装vue 解决VUE无法打开图形界面工具,输入vue ui无反应 vue-cli版本2.9.6无法升级 npm uninstall vue-cli卸载时失败
  4. tomcat配置https,单方验证,并自动将http请求转成https
  5. php5.4 session配置,Session
  6. (论文)WS-DAN (弱监督数据增强)
  7. python 常用简单代码
  8. 学习笔记-OS - Exploits
  9. mt7621 openwrt19.07 打开uart3
  10. 10_微信小程序-BLE低功耗蓝牙开发-连接设备
  11. BZOJ1750: [Usaco2005 qua]Apple Catching
  12. 阿里巴巴-1688-退款退货明细下载(导出)
  13. 2011年20大3D网站
  14. 解决 Git 报错:GitHub - failed to connect to github 443
  15. 融汇贯通实用的socket属性典型讲解
  16. 访问InfoPath的xml数据
  17. nyoj451 光棍节的快乐
  18. uniapp 框架下如何引入turf.js
  19. LeetCode T48 Rotate Image
  20. 【Linux Socket 编程入门】06 - 拉个骡子溜溜:UDP编程模型代码分析

热门文章

  1. python中读取txt文件、统计其中所有字母出现的频度_python——pandas练习题6-10
  2. 《设计模式之禅》--单例扩展:多例模式
  3. TCP连接、Http连接与Socket连接
  4. STL--deque用法
  5. 没有body怎么添加onload事件
  6. Asp.net文章内容分页
  7. sicily 1443 Printer Queue
  8. SQL Server 2005 分页SQL
  9. RF工具ride使用
  10. (十二)RabbitMQ消息队列-性能测试