what() 调用的解释
Explanation to the what() call
using namespace std;
struct MyException : public exception
{
const char * what () const throw () // <--- This
{
return "C++ Exception";
}
};
请考虑标记的行。
有人可以向我解释该语句中使用的语法吗
我想我应该将查询范围缩小到 "const throw()" 部分...
感谢大家的回复
what
是 returns 一个 const char *
的函数。它也是一个从不抛出异常的函数。
该行是classMyException
的成员函数声明。它遵循与任何其他函数声明完全相同的语法。
const char *
- 是函数的 return 类型。
what
- 是函数的名称。
()
-(空)参数列表。该方法不带参数。
const
- 声明这是一个 const 函数(一般来说,这意味着它不应该改变对象的状态)。
throw ()
- 声明函数不抛出异常。
这是一个成员函数定义。
const char *
是 return 类型,指向常量字符的指针,按照惯例,它是零终止字符串数组的第一个字符。
what
是函数名
()
是一个空参数列表,表示函数不带参数
const
限定函数,所以可以在const
对象上调用,不能直接修改对象的成员
throw ()
是一个异常规范,可以防止它抛出任何异常。
这会覆盖 exception
基 class 中声明的虚函数,允许您获得描述抛出的特定异常的文本消息:
try {
// Throw a specific type
throw MyException();
} catch (std::exception const & ex) {
// Catch a generic type and extract the message
std::cerr << ex.what() << '\n'; // prints "C++ Exception"
}
using namespace std;
struct MyException : public exception
{
const char * what () const throw () // <--- This
{
return "C++ Exception";
}
};
从你的问题中不清楚你不确定哪一点,但我猜是 throw()
,因为这不常用。
这用于记录方法可以抛出的异常类型,使编译器能够检查:
- 当你使用该方法时,你正在捕获所有抛出的东西
- 不扔不该扔的东西
该行的其余部分相当标准:
const char * what () const throw ()
what()
: 一个名为 what.
的函数
what() const
: what() 是一个 const 函数,所以它可以用在 MyException
类型的 const 对象上
const char* what() const
:什么是const函数,returns指向const char
的指针
using namespace std;
struct MyException : public exception
{
const char * what () const throw () // <--- This
{
return "C++ Exception";
}
};
请考虑标记的行。 有人可以向我解释该语句中使用的语法吗
我想我应该将查询范围缩小到 "const throw()" 部分...
感谢大家的回复
what
是 returns 一个 const char *
的函数。它也是一个从不抛出异常的函数。
该行是classMyException
的成员函数声明。它遵循与任何其他函数声明完全相同的语法。
const char *
- 是函数的 return 类型。
what
- 是函数的名称。
()
-(空)参数列表。该方法不带参数。
const
- 声明这是一个 const 函数(一般来说,这意味着它不应该改变对象的状态)。
throw ()
- 声明函数不抛出异常。
这是一个成员函数定义。
const char *
是 return 类型,指向常量字符的指针,按照惯例,它是零终止字符串数组的第一个字符。what
是函数名()
是一个空参数列表,表示函数不带参数const
限定函数,所以可以在const
对象上调用,不能直接修改对象的成员throw ()
是一个异常规范,可以防止它抛出任何异常。
这会覆盖 exception
基 class 中声明的虚函数,允许您获得描述抛出的特定异常的文本消息:
try {
// Throw a specific type
throw MyException();
} catch (std::exception const & ex) {
// Catch a generic type and extract the message
std::cerr << ex.what() << '\n'; // prints "C++ Exception"
}
using namespace std;
struct MyException : public exception
{
const char * what () const throw () // <--- This
{
return "C++ Exception";
}
};
从你的问题中不清楚你不确定哪一点,但我猜是 throw()
,因为这不常用。
这用于记录方法可以抛出的异常类型,使编译器能够检查:
- 当你使用该方法时,你正在捕获所有抛出的东西
- 不扔不该扔的东西
该行的其余部分相当标准:
const char * what () const throw ()
what()
: 一个名为 what.
what() const
: what() 是一个 const 函数,所以它可以用在 MyException
const char* what() const
:什么是const函数,returns指向const char