相关疑难解决方法(0)

C++ 03 throw()说明符C++ 11 noexcept之间的区别

有没有之间的任何其他差别throw()noexcept除了被检查的运行时分别编译时间?

维基百科C++ 11文章表明不推荐使用C++ 03 throw说明符.
为什么这样,noexcept有足够的能力在编译时覆盖所有这些?

[注意:我提到了这个问题这篇文章,但没有得到弃用的充分理由.]

c++ exception throw noexcept c++11

94
推荐指数
2
解决办法
2万
查看次数

正确的继承std :: exception的方法

我刚刚创建了异常层次结构,并希望传递char*给我的一个派生类的构造函数,并带有一条告诉错误的消息,但显然std::exception没有允许我这样做的构造函数.然而,有一个类成员被称为what()可以传递一些信息.
我怎么能(我可以?)将文本传递给a的派生类,std::exception以便通过我的异常类传递信息,所以我可以在代码中的某处说:

throw My_Exception("Something bad happened.");
Run Code Online (Sandbox Code Playgroud)

c++ exception

53
推荐指数
5
解决办法
6万
查看次数

如何编写从 std::invalid_argument 派生的自定义异常类?

我应该如何编写一个高效的异常类来显示可以通过在运行时修复源代码错误来防止的错误?

这就是我选择的原因std::invalid_argument

我的异常类(显然不起作用):

class Foo_Exception : public std::invalid_argument
{
private:
    std::string Exception_Msg;
public:
    explicit Foo_Exception( const std::string& what_arg );
    virtual const char* what( ) const throw( );
};

explicit Foo_Exception::Foo_Exception( const std::string& what_arg ) // how should I write this function???
{
    Exception_Msg.reserve( 130000 );

    Exception_Msg = "A string literal to be appended, ";
    Exception_Msg += std::to_string( /* a constexpr int */ );
    Exception_Msg += /* a char from a const unordered_set<char> */;
}

const char* Foo_Exception::what( ) …
Run Code Online (Sandbox Code Playgroud)

c++ exception c-strings stdstring micro-optimization

5
推荐指数
1
解决办法
3196
查看次数