美文网首页
throw异常处理抛出产生Debug Error,abort()

throw异常处理抛出产生Debug Error,abort()

作者: ExpreeDark | 来源:发表于2020-10-09 01:00 被阅读0次

    使用visual studio 2019写如下代码时

    
    #include <iostream>
    
    using namespace std;
    
    int func1(int n);
    
    int main()
    
    {
    
    int number;
    
    cin >> number;
    
    try { cout << func1(number) << endl; }
    
    catch ( char* e)
    
    {
    
    cout << e << endl;
    
    return 1;
    
    }
    
    }
    
    int func1(int n)
    
    {
    
    int res = 1;
    
    if (n < 0)
    
    throw "error: n <0";
    
    if (n == 0 || n == 1)
    
    return 1;
    
    while (n > 1)
    
    {
    
    res *= n;
    
    n--;
    
    }
    
    return res;
    
    }
    
    

    理论上当n<0时,应为溢出计算范围,会抛出一个异常,但是产生如图错误

    将代码改成如下,问题得以解决;

    
    #include <iostream>
    
    using namespace std;
    
    int func1(int n);
    
    int main()
    
    {
    
    int number;
    
    cin >> number;
    
    try { cout << func1(number) << endl; }
    
    catch (const char* e)
    
    {
    
    cout << e << endl;
    
    return 1;
    
    }
    
    }
    
    int func1(int n)
    
    {
    
    int res = 1;
    
    if (n < 0)
    
    throw "error: n <0";
    
    if (n == 0 || n == 1)
    
    return 1;
    
    while (n > 1)
    
    {
    
    res *= n;
    
    n--;
    
    }
    
    return res;
    
    }
    
    

    相关文章

      网友评论

          本文标题:throw异常处理抛出产生Debug Error,abort()

          本文链接:https://www.haomeiwen.com/subject/cipkpktx.html