相关疑难解决方法(0)

C++ throw装饰有什么用吗?

我已经开始以统一的方式使用C++异常,现在我希望编译器(g ++)检查没有"异常泄漏".该throw装修应该这样做,好像const确实为类方法常量性.

嗯,事实并非如此.

使用throw仍然是纪录片,但如果其他人认为函数不能抛出其文档中列出的其他异常,则甚至可能会产生危险的误导.

可以说g ++以某种方式被说服对其抛出检查更加严格,即真正确保一个函数被装饰为throw()永远不会抛出任何东西.

编辑:发现此问题广泛处理该主题.

c++ exception

14
推荐指数
2
解决办法
9879
查看次数

函数声明后的 throw() 有什么用?

C++ expressionThrow在https://en.cppreference.com/w/cpp/language/throw中定义为 a 。从语法上讲,它后面跟着一个异常类名。例如:

int a = 1, b = 0; 
if (b==0){
    string m ="Divided by zero";
    throw MyException(m);       //MyException is a class that inherit std::exception class
}
Run Code Online (Sandbox Code Playgroud)

但是,我见过其他一些我不太理解的 throw 语法:

void MyFunction(int i) throw();     // how can we have an expression following a function definition? 
Run Code Online (Sandbox Code Playgroud)

或者在自定义异常类中,我们还有:

class MyException : public std::exception
{
public:
  MyException( const std::string m)
    : m_( m )
  {}

  virtual ~MyException() throw(){};               // what is throw() in this case? 
  const char* what() …
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
670
查看次数

标签 统计

c++ ×2

exception ×1