在 C++ 异常处理问题中“抛出”之前出现错误预期初始值设定项

Getting Error expected initializer before 'throw' in C++ Exception Handling Problem

提问人:Chelsea jain 提问时间:9/10/2023 更新时间:9/10/2023 访问量:31

问:

我正在尝试解决黑客等级继承代码问题,并得到我自己无法解决的错误。 我参考了 GFG 来了解异常处理和 bad_exception:https://www.geeksforgeeks.org/exception-handling-c/ https://www.geeksforgeeks.org/exceptionbad_exception-in-c-with-examples/

#include <iostream>
#include <string>
#include <exception>
using namespace std;
void BadLengthException(int n) throw(int) throw(bad_exception)
{
    if(n){
        throw n;
    }
}
bool checkUsername(string username) {
    bool isValid = true;
    int n = username.length();
    if(n < 5) {
        throw BadLengthException(n);
    }
    for(int i = 0; i < n-1; i++) {
        if(username[i] == 'w' && username[i+1] == 'w') {
            isValid = false;
        }
    }
    return isValid;
}

int main() {
    int T; cin >> T;
    while(T--) {
        string username;
        cin >> username;
        try {
            bool isValid = checkUsername(username);
            if(isValid) {
                cout << "Valid" << '\n';
            } else {
                cout << "Invalid" << '\n';
            }
        } catch (BadLengthException e) {
            cout << "Too short: " << e.what() << '\n';
        }
    }
    return 0;
}
C++ 函数 异常 错误处理 try-catch

评论

1赞 PaulMcKenzie 9/10/2023
我从GFG那里得到了参考 - 该网站因糟糕的C++建议,编码示例和其他任何东西而臭名昭著。-- 我正在尝试解决黑客等级继承代码 -- 看来你正在尝试通过访问竞赛网站和geeksforgeeks来学习C++。对不起,但要学习最难的计算机语言之一,需要投资同行评审的书籍和材料。
0赞 PaulMcKenzie 9/10/2023
您的代码不合法 C++17。这是你使用糟糕的网站学习C++编程时得到的东西。
2赞 user17732522 9/10/2023
自 C++ 17 起,动态异常规范语法已从 C++ 中删除,并且自 C++11 起已被弃用。它不再有效。该代码已严重过时,无法在大多数具有默认设置的现代编译器上编译。众所周知,链接的网站充满了错误和糟糕的建议,并且是学习C++的可怕来源。throw(/*some type*/)
0赞 PaulMcKenzie 9/10/2023
从 std::exception 继承的正确方法
0赞 Chelsea jain 9/10/2023
可以对代码进行哪些更改以删除错误?

答: 暂无答案