`

C++的throw;

 
阅读更多

在github上看到一段代码,发现C++的throw;可以写在catch块外的任意位置

(一般throw;应该放在catch块中表示重新抛出异常)

所以用cygwin写了一段代码,发现可以编译成功,

而且这样抛出的异常不会被捕获任意异常的catch所捕获,

测试程序如下:

 

 

#include <iostream>
using namespace std;

int main(int argc, char **argv) {
	try {
		cout << "Hello, world!" << endl;
		throw "Oh, My God";
		cout << "Cannot reach!" << endl;
	} catch (...) {
		cout << "Catch exception!" << endl;
	}
	try {
		cout << "Hello, world!" << endl;
		throw;
		cout << "Cannot reach!" << endl;
	} catch (...) {
		cout << "Catch exception!" << endl;
	}
}
/*
$ c++ -g test.cpp
$ ./a.exe
Hello, world!
Catch exception!
Hello, world!
terminate called without an active exception
Aborted (core dumped)
*/

 我觉得这种写法更像assert(0);

 

分享到:
评论

相关推荐

    C++中异常处理的基本思想及throw语句抛出异常的使用

    C++的异常处理机制是一种强大的错误处理方式,它允许程序在遇到异常情况时中断正常流程,转而执行特定的异常处理代码。这种机制的核心思想是将错误处理与正常逻辑分离,使得底层函数可以专注于功能实现,而将异常...

    throw的一些用法

    无论是.net还是java,在开发程序时都难免会用到throw关键字,对于初学者一般会认为它与try…catch捆绑在一起,这当然是错误的,事实上,throw的一个最重要的作用就是: 让程序告诉用户一些事情,这些事情一般是开发...

    解析C++编程中异常相关的堆栈展开和throw()异常规范

    总结来说,C++的异常处理机制是通过堆栈展开来清理资源并在遇到异常时恢复控制流,同时异常规范(如throw()和noexcept)提供了对函数行为的额外保证,帮助优化代码并确保程序的异常安全性。理解这些概念对于编写健壮...

    C++编程实例100篇

    异常处理是处理程序运行时错误的方式,通过try、catch和throw关键字,可以捕获并处理可能出现的异常情况,增加程序的健壮性。 在学习C++编程实例时,不仅要理解每个示例的代码逻辑,还要思考如何优化和改进。同时,...

    C++语言核心 C++语言核心 C++语言核心 C++语言核心 C++语言核心 C++语言核心 C++语言核心 C++语言核心 C++语言核心 C++

    5. **异常处理**:通过try、catch和throw关键字,C++提供了异常处理机制,使得程序能优雅地处理运行时错误。 6. **标准库**:C++标准库提供了大量的工具,包括容器(如vector、list、map)、算法、输入/输出流...

    c++ 两个基本异常处理 源代码

    在C++编程语言中,异常处理是一项至关重要的机制,它允许程序员优雅地处理程序运行时可能出现的错误或异常情况。本资源包含的源代码着重展示了C++中的两种基本异常处理方式,即`try-catch`块的应用。下面将详细介绍...

    浅谈C++函数声明后面加throw()的作用(必看)

    C++里面为什么有时候在函数声明的时候在后面加throw()关键字? 解释: C++函数后面加关键字throw(something)限制,是对这个函数的异常安全作出限制;这是一种异常规范,只会出现在声明函数时,表示这个函数可能抛出...

    C++View C++View C++View

    4. **异常处理(Exception Handling)**:C++通过try、catch和throw关键字实现异常处理,使得程序在遇到错误时能够优雅地进行恢复,而不是立即崩溃。 5. **命名空间(Namespaces)**:命名空间用于避免全局作用域中...

    c++讲义汇集 c++讲义汇集 c++讲义汇集 c++讲义汇集

    4. **异常处理**:C++的异常处理机制允许程序在运行时捕获和处理错误,通过try、catch和throw关键字进行异常的抛出和捕获。 5. **STL(Standard Template Library)**:C++标准库中的重要部分,提供了容器(如...

    C++异常处理技巧try/catch/throw/finally/exception

    通过合理地使用`try`、`catch`、`throw`和`exception`等关键字,开发者不仅能够编写更加可靠的代码,还能显著提升程序的可维护性和可读性。 #### 二、C++标准异常处理 ##### 1. 构造和析构中的异常抛出 在C++中,...

    c++ 编程思想 (thinking in c++) 源代码 下载

    try、catch和throw关键字是其核心。 8. **标准库**:C++标准库提供了大量预先定义的类和函数,如输入/输出流、容器(如vector、list、map)和算法。 9. **STL(Standard Template Library)**:STL是C++标准库的一...

    exception C++ & More exception C++

    "Exception C++ & More Exception C++"可能是指两本关于深入理解和应用C++异常处理机制的书籍,其中包含"More Exceptional C++.chm"和"Exceptional C++.chm"这两个章节或部分。 异常处理是C++中的一个核心特性,它...

    C++高效编程网页版

    5. **异常处理**:C++支持异常处理机制,通过try、catch和throw关键字来捕获和处理运行时错误,使得程序在出现问题时能优雅地恢复或终止。 6. **内存管理**:C++提供了对内存的直接控制,包括动态内存分配和释放。...

    C++ api 中文参考文档

    8. **异常处理**:try、catch、throw关键字用于处理运行时错误,保证程序在出现异常情况时能正常退出。 9. **输入/输出流**:iostream库,包括cin、cout等,方便进行文本输入输出。 10. **C++11及其后新特性**:如...

    C++编程思想课后答案官方完整版本thinking in C++

    4. **异常处理**:通过try、catch和throw关键字,C++提供了异常处理机制,使得程序能优雅地处理运行时错误,而不是突然崩溃。 5. **STL(标准模板库)**:STL是C++的核心部分,包含了容器(如vector、list、set)、...

    C# 捕获C/C++异常的例子

    然而,C++的异常处理机制与C#不同,它使用`throw`和`catch`关键字,以及`try`块来抛出和捕获异常。当C#代码调用C++动态链接库(DLL)或托管C++代码时,我们需要理解这两种机制如何协同工作。 首先,C++异常是通过...

    C++资料大全 C++资料大全

    4. **异常处理**:如何在C++中使用try、catch和throw进行错误处理,理解异常类层次结构。 5. **STL**:详述标准模板库,包括容器(如vector、list、set、map等)、算法(排序、查找、迭代等)和迭代器的使用。 6. ...

    C++基础教程_完整版 - 副本.pdf

    * 异常处理:介绍了 C++语言中的异常处理,包括 try 语句、catch 语句、throw 语句等。 C++标准函数库 本章节介绍了 C++语言中的标准函数库,包括文件的输入输出、字符串处理、容器类等。 * 文件的输入输出:介绍...

Global site tag (gtag.js) - Google Analytics