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 异常。编写产生这种异常的程序。

代码如下:

 #include<iostream>
#include<bitset> using namespace std; int main() {
bitset<>bs; for(int i = ; i != bs.size(); i++) {
bs[i] = ;
} try {
bs.to_ulong();
}
catch (runtime_error err) {
cout << err.what()
<< "\tWrong!"<< endl;
} }

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 异常类型。

[010]Try块和异常处理的更多相关文章

  1. try语句块和异常处理

    在C++中,异常处理包括: · throw表达式(throw expression) 异常检测部分使用throw表达式来表示它遇到了无法处理的问题.throw表达式抛出一个异常并把控制权转移到能处理该 ...

  2. .NET中异常处理的最佳实践(译)

    本文翻译自CodeProject上的一篇文章,原文地址. 目录 介绍 做最坏的打算 提前检查 不要信任外部数据 可信任的设备:摄像头.鼠标以及键盘 “写操作”同样可能失效 安全编程 不要抛出“new ...

  3. PL/SQL异常处理

    As we all known,程序的错误一般分为两类:编译错误和运行时错误.其中运行时错误被称为异常.PL/SQL语句块中处理异常的部分即为异常处理部分.在异常处理部分,可以指定当特定异常发生时所采 ...

  4. Delphi中的异常处理

    转载:http://www.cnblogs.com/doit8791/archive/2012/05/08/2489471.html 以前写Delphi程序一直不注意异常处理,对其异常处理的机制总是一 ...

  5. Oracle 存储过程异常处理

    Oracle 存储过程异常处理 1.异常的优点    如果没有异常,在程序中,应当检查每个命令的成功还是失败,如  BEGIN  SELECT ...  -- check for ’no data f ...

  6. .NET中异常处理的最佳实践(转)

    原文出处: CodeProject   译文出处:周见智的博客   欢迎分享原创到伯乐头条 介绍 “我的软件程序从来都不会出错”.你们相信吗?我几乎可以肯定所有人都会大喊我是个骗子.“软件程序几乎不可 ...

  7. ASP.NET(C#)中的try catch异常处理机制

    在开发一个Umbraco平台系统的过程中,遇到了问题. 写的代码如下 fileUrl = MediaHelper.GetMediaUrl(Convert.ToInt32(publishedConten ...

  8. ORACLE PL/SQL异常处理(Exception)学习笔记

    1.PL/SQL错误类型 错误类型 报告者 处理方法 编译时错误 PL/SQL编译器 交互式地处理:编译器报告错误,你必须更正这些错误 运行时错误 PL/SQL运行时引擎 程序化地处理:异常由异常处理 ...

  9. Oracle数据库之PL/SQL异常处理

    Oracle数据库之PL/SQL异常处理 异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的. PL/SQL程序设计过程中,即使是写得最好的程序也可能会遇到错误或未预料 ...

随机推荐

  1. What is Cross Linux From Scratch?

    /**************************************************************************** * What is Cross Linux ...

  2. webstorm使用教程--主题设置

    1. 代码字体设置 :注意需要另存为 Scheme name一个才可以修改Editor Font. 字体设置:Editor->Color & Fonts->Font 2. 界面字体 ...

  3. 【转】UIColor对颜色的自定义

    原文网址:http://blog.sina.com.cn/s/blog_5f19ccb10101bhqh.html 在iOS开发中,我们使用UIColor来对我们的界面进行颜色设置,一般我们通过以下两 ...

  4. postgreSQL数据类型转换字符串和数值

    1.将数值转成字符串类型  方法1:调用to_char(int, text)函数,int为要转换值,text为数值格式化模式,其中模式描述为: 模式 描述 9 带有指定数值位数的值 0 带前导零的值 ...

  5. table点击一行显示下一行的特效

    效果体验:http://sandbox.runjs.cn/show/rw4vq8zo <!doctype html> <html> <head> <meta ...

  6. Struts2的struts.properties文件在哪儿啊?

    老师教我们Struts2的时候叫我们建了个Struts.xml文件啊?那struts.properties呢?不需要吗? 回答1: struts.properties 是可以不要的!!!因为 stru ...

  7. Application Pool Identities

    Whether you are running your site on your own server or in the cloud, security must be at the top of ...

  8. HDU 1560 DNA sequence DFS

    题意:找到一个最短的串,使得所有给出的串是它的子序列,输出最短的串的长度,然后发现这个串最长是40 分析:从所给串的最长长度开始枚举,然后对于每个长度,暴力深搜,枚举当前位是哪一个字母,注意剪枝 注: ...

  9. unity3d教程资源

    unity2d教程网 http://learnunity2d.com/2d-shootem-up-tutorial/ 横版射击2d游戏系列教程 http://pixelnest.io/tutorial ...

  10. C++设计模式——策略模式

    策略模式 在GOF的<设计模式:可复用面向对象软件的基础>一书中对策略模式是这样说的:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.该模式使得算法可独立于使用它的客户而变化 ...