try块内使用throw关键字抛出的。异常处理程序使用catch关键字声明,它必须紧跟在try块之后。 |
|
An exception occurred. Exception Nr. 20 |
try块中。在本例中,该代码只是抛出一个异常。 |
|
throw表达式接受一个参数(在本例中为整数值20),该参数作为参数传递给异常处理程序。try块的结束大括号之后立即使用catch关键字声明。catch的语法类似于带有单个参数的常规函数。此参数的类型非常重要,因为throw表达式传递的参数类型会与之进行检查,只有当它们匹配时,该异常才会被该处理程序捕获。catch表达式);每个处理程序都具有不同的参数类型。只有参数类型与throw语句中指定的异常类型匹配的处理程序才会被执行。...)作为catch的参数,该处理程序将捕获任何异常,无论抛出的异常类型是什么。这可以作为默认处理程序,捕获所有未被其他处理程序捕获的异常。 |
|
int也不是char的异常。throw语句之后!。try块中嵌套try-catch块。在这些情况下,我们有可能内部catch块将异常转发给其外部级别。这是通过不带参数的throw;表达式完成的。例如。 |
|
throw说明符。例如。 |
|
myfunction的函数,该函数接受一个char类型的参数并返回一个double类型的值。如果该函数抛出除int以外的任何类型的异常,该函数将调用std::unexpected,而不是查找处理程序或调用std::terminate。throw说明符为空,不带类型,则表示任何异常都会调用std::unexpected。没有throw说明符的函数(常规函数)从不调用std::unexpected,而是遵循查找其异常处理程序的正常路径。 |
|
std::exception,定义在<exception>头文件中。该类有一个名为what的虚成员函数,它返回一个以null结尾的字符序列(类型为char *),并且可以在派生类中被覆盖,以包含某种异常描述。 |
|
My exception happened. |
&)来捕获异常对象,因此这也捕获了派生自exception的类,比如我们类型为myexception的myex对象。exception的异常。它们是:| exception | 描述 |
|---|---|
bad_alloc | 由new在分配失败时抛出 |
bad_cast | 由dynamic_cast在动态转换失败时抛出 |
bad_exception | 由某些动态异常说明符抛出 |
bad_typeid | 由typeid抛出 |
bad_function_call | 由空function对象抛出 |
bad_weak_ptr | 由shared_ptr在传递了错误的weak_ptr时抛出 |
exception,头文件<exception>定义了两个通用的异常类型,可以被自定义异常继承以报告错误。| exception | 描述 |
|---|---|
logic_error | 与程序内部逻辑相关的错误 |
runtime_error | 运行时检测到的错误 |
|
|
bad_alloc。因为bad_alloc派生自标准基类exception,所以它可以被捕获(通过引用捕获,捕获所有相关类)。类型转换 | 目录 | 预处理器指令 |