【问题标题】:Throwing and catching a string [duplicate]投掷和接住绳子[重复]
【发布时间】:2013-06-07 14:33:26
【问题描述】:

我只是把我的错误写成文字。 我应该将它们捕获为char* v、char v 还是const char* v?

try{
    int choice = 1
        if(choice != 2)
            throw choice;
}
catch(char* v){
    if (v == choice)
cout << "Error: choice != 2."
}

【问题讨论】:

  • 不要。使用std::exception 和派生类。
  • 在你的代码中你抛出的是 int,而不是字符串!?
  • 问题是关于字符串,你抛出一个 int 并捕获一个 char 指针......如果你想提供错误消息,请使用std::runtime_error。

标签: c++


【解决方案1】:

你应该捕获一个 int,因为你正在抛出一个 int

【讨论】:

    【解决方案2】:

    试试这个:

    try
    {
        int choice = 1;
        if(choice != 2)
        {
            throw std::runtime_error("choice != 2");
        }
    }
    catch(std::exception& e)
    {
        std::cout << "Error: " << e.what() << "\n";
    }
    

    std::exceptions 是要抛出的首选对象,并且 错误位置最清楚地提供对正在发生的事情的描述。

    【讨论】:

    • 我认为您应该删除条件v == choice,因为在此位置既没有定义v 也没有定义choice,并且您希望通常显示异常的“what”-消息,独立于哪个发生了错误,对吧?
    • @leemes:同意那个。我从原始问题中复制了它
    • 我删除了v == choice
    • 现在只少了两个分号——添加了它们。 ;)
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 2011-02-12
    • 1970-01-01
    • 2017-10-12
    • 2011-04-02
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多