`
chenqi210
  • 浏览: 78672 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C++ 接异常时的注意

    博客分类:
  • c++
C++ 
阅读更多

 

void test1()
{
	try
	{
		try
		{
			throw runtime_error("asdfasdf");
		}
		catch(std::exception &e)
		{
			throw e;
		}
	}
	catch(std::runtime_error &e)
	{	
		throw e;
	}
	catch(std::exception &e)
	{
		cout<<e.what()<<endl;
	}
}

 

这段代码都有输出:

 在vc2010里输出 仍然是 asdfasdf

但是mingw4.5.2里输出则是std::exception

 

当runtime_error 被扔出来的时候,exception& e接住了,但是 e再抛出的时候,因为已经是exception的异常了,所以只能被第三个catch接住. 

分享到:
评论

相关推荐

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

    值得注意的是,C++异常和C#异常之间的转换可能涉及类型转换和资源管理问题。C++异常可能涉及到内存分配,而在C#中需要确保这些资源被正确释放。此外,由于C++异常不总是对象,所以可能需要额外的适配器或包装器来...

    mongodb的c++连接接口

    在 Windows 上,还需要确保运行时环境(如 `msvcr140.lib` 和 `vcruntime140.lib`)和 Boost 相关库(如 `libboost_thread-vc140-mt-s-1_67.lib`)也已正确链接。 5. **基本用法**:C++ 驱动通常通过创建 `MongoDB:...

    C++接口实现总结

    10. **异常安全**:接口设计应考虑异常安全,确保在抛出异常时,系统状态仍然保持一致,避免资源泄露。 总之,C++通过抽象类、纯虚函数、多重继承等手段实现了接口的概念,尽管这些机制比某些支持接口的语言更为...

    C++连接mysql数据库 源代码

    1. **MySQL C++ Connector**: 连接MySQL数据库时,通常会使用MySQL官方提供的C++ Connector,这是一个用于C++应用程序的数据库驱动程序,它提供了与MySQL服务器通信的接口。通过该接口,C++程序能够执行SQL查询,...

    C++连接mysql例子

    接下来,确保在你的项目中正确地链接了MySQL Connector/C++库。这通常涉及到在编译命令行中添加相应的-L和-l选项,或者在IDE的设置中配置库路径和链接器依赖项。 以下是一个简单的C++代码示例,演示如何连接MySQL...

    C++连接oracle数据库

    11. **异常处理**:为了增强代码的健壮性,可以使用C++的异常处理机制,捕获并处理可能抛出的oci异常。 通过以上步骤,我们可以构建一个基础的C++程序,使其能够连接Oracle数据库并执行SQL操作。在实际开发中,可能...

    linux(centos) 下C++连接mysql数据库

    在Linux(CentOS)系统中,使用C++连接MySQL数据库是一项常见的任务,特别是在开发服务器端应用程序时。这里我们将深入探讨如何实现这一目标,以及在这个过程中可能遇到的关键知识点。 首先,你需要确保你的系统...

    c++分屏显示接口,c++分屏显示接口

    在C++中实现这些功能时,还需要注意错误处理和异常安全。例如,调用API函数时可能失败,因此需要检查返回值并适当地处理错误。同时,为了保持代码的健壮性,应该使用异常处理机制,确保在出现未预期情况时能够优雅地...

    c++连接mysql的封装类

    - 错误处理:良好的封装类应包含适当的错误处理机制,如异常处理,以便在发生错误时能够优雅地恢复或报告问题。 - 连接池:为了提高性能和资源管理,封装类可能会实现连接池的概念,复用已建立的数据库连接,减少...

    C++连接java

    这为开发者提供了更大的灵活性,比如在需要高性能计算或者利用现有C/C++库时,可以将这些部分用C++实现,而将业务逻辑和用户界面保留在Java中。 在C++连接Java的过程中,有以下几个关键步骤: 1. **设置开发环境**...

    c++ ado连接oracle

    此外,还要注意处理异常、连接池管理和资源释放,以确保程序的稳定性和效率。 在实际项目中,你可能还需要考虑安全性问题,如使用预编译的SQL语句防止SQL注入,以及定期更换数据库密码。同时,了解Oracle的数据类型...

    C#调用C++动态DLL

    注意,如果DLL是用C++编写的,可能需要设置`CharSet`、`CallingConvention`等属性来匹配C++的调用约定和字符集。 4. **调用DLL函数**:现在,你可以创建一个委托类型的实例,并用它来调用DLL中的函数。例如,如果你...

    C#调用C++ Api或接口转换工具

    此外,C++的异常处理与C#的异常处理机制不同,可能需要额外的考虑。在进行跨语言调用时,要确保对这些差异有清晰的理解。 总的来说,C#调用C++ API是通过P/Invoke或C++/CLI实现的,而接口转换工具可以极大地简化这...

    C++连接activityMQ

    在使用过程中,一定要注意线程安全和异常处理,确保程序的稳定性和可靠性。同时,不要忘记在完成后断开连接和清理资源。 在提供的"TestMQ"文件中,可能包含了实现上述功能的示例代码。通过阅读和理解这些代码,你...

    C++连接数据库代码

    同时,注意处理异常和资源释放,确保程序的健壮性。 在“C++连接数据库代码”这个主题中,你可能会学习到以下内容: 1. 数据库连接API的使用,如ODBC或ADO。 2. 如何配置和使用数据源名称(DSN)。 3. SQL语句的...

    C++连接数据库的实例

    C++作为一种强大的编程语言,在处理复杂的系统级任务时具有显著优势。本文将详细介绍一个C++程序如何连接到数据库并执行基本操作的具体实现。 #### 二、背景知识 在开始介绍具体的代码实现之前,我们需要了解一些...

    Visual C++中的异常处理浅析

    微软还对C和C++的异常处理进行了扩展,引入了结构化异常处理(Structured Exception Handling, SEH),这使得C和C++程序能够处理更广泛的异常情况,而MFC的异常处理则主要针对C++。 异常处理的核心流程包括以下几个...

    java调用C++动态链接库dll接口

    需要注意的是,由于C++的内存管理和异常处理机制与Java不同,调用C++库时要特别小心,避免出现内存泄漏或异常传播等问题。此外,如果C++库使用了复杂的数据结构或自定义类型,可能需要自定义映射类来转换数据类型。 ...

    C++ 连接MYSQL源代码

    值得注意的是,`libmysql.dll`是一个动态链接库,它在运行时提供对MySQL API的访问。将其放在`c:\windows\system32\`目录下,可以确保程序运行时能找到这个库。 在实际开发中,我们可能会遇到更复杂的情况,如处理...

Global site tag (gtag.js) - Google Analytics