如何抛出C ++异常 c ++异常处理 我对异常处理的理解很差(即,如何根据自己的目的自定义throw,try,catch语句)。
例如,我已经定义了一个函数,如下所示:int compare(int a,int b){...}
当a或b为负数时,我喜欢使用某些消息抛出异常的函数。
我应该如何在函数的定义中解决这个问题?
答案 0 :(得分:1)
该函数的定义保持
int compare(int a, int b);
是否抛出异常(忘记throw(exception)
,它被视为bad practice并且已被弃用)。
如果您想要在a或b为负数时抛出异常,则将此代码放入方法实现中:
int compare(int a, int b)
{
if(a < 0 || b < 0)
{
throw std::logic_error("a and be must be positive");
}
// the comparing code here
}
这就是方法抛出所需的全部内容。请注意,您需要#include <stdexcept>
。
对于调用代码(例如main
),您可以这样做:
int result;
try
{
result = compare(42, -10);
}
catch(const std::logic_error& ex)
{
// Handle the exception here. You can access the exception and it's members by using the 'ex' object.
}
请注意我们catch
子句中catch the exception as a const reference的方式,以便您可以访问ex.what()
等异常成员,这些成员会为您提供异常消息,在本例中为
“a并且必须是积极的”
请注意。
您当然可以抛出其他异常类型(甚至是您自己的自定义异常),但是对于此示例,我发现std::logic_error
最合适,因为它报告了a faulty logic。