Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ 我们在哪里可以使用;试一试“接球”;例外呢? 如何抛出C++异常 C++异常处理 我对异常处理的理解很差(例如,如何为自己的目的定制throw、try、catch语句)_Visual C++ - Fatal编程技术网

Visual c++ 我们在哪里可以使用;试一试“接球”;例外呢? 如何抛出C++异常 C++异常处理 我对异常处理的理解很差(例如,如何为自己的目的定制throw、try、catch语句)

Visual c++ 我们在哪里可以使用;试一试“接球”;例外呢? 如何抛出C++异常 C++异常处理 我对异常处理的理解很差(例如,如何为自己的目的定制throw、try、catch语句),visual-c++,Visual C++,例如,我定义了一个函数如下:intcompare(inta,intb){…} 我希望函数在a或b为负时抛出一个带有消息的异常 在函数的定义中应该如何处理这个问题?一点也不。 函数的定义保持不变 int compare(int a, int b); 无论您是否抛出异常(忘记它,它被认为是不推荐的) 如果要在a或b为负时引发异常,请将以下代码放入方法实现中: 注意我们如何在catch子句中定义异常,以便您可以访问异常成员,例如ex.what(),在本例中,它会向您提供异常消息 “a和必须为正”

例如,我定义了一个函数如下:intcompare(inta,intb){…}

我希望函数在a或b为负时抛出一个带有消息的异常

在函数的定义中应该如何处理这个问题?

一点也不。 函数的定义保持不变

int compare(int a, int b);
无论您是否抛出异常(忘记它,它被认为是不推荐的)


如果要在a或b为负时引发异常,请将以下代码放入方法实现中:

注意我们如何在
catch
子句中定义异常,以便您可以访问异常成员,例如
ex.what()
,在本例中,它会向您提供异常消息

“a和必须为正”


注意。 当然,您可以抛出其他异常类型(甚至您自己的自定义异常),但对于这个示例,我发现
std::logic\u error
最合适,因为它会报告。

您可能需要阅读
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
}
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.
}