当前位置: 首页 > 知识库问答 >
问题:

从C++中定义的异常返回整数

孟光耀
2023-03-14

我想定义一个返回int的异常。下面给出了我的代码。它显示出错误。

class BadLengthException : public exception {
    public:
        int x;

    BadLengthException(int n){
        x =n;
    }

    virtual const int what() const throw ()  {
        return x;
    }
};

solution.cc:12:22:错误:为“virtual const int BadLengthException::what()const throw()”{^~~~指定的返回类型冲突,该文件包含的文件来自/usr/include/C++/7/Exception:38:0、来自/usr/include/C++/7/IOS:39、来自/usr/include/C++/7/Ostream:38、来自/usr/include/C++/7/IOstream:39、来自solution.cc:1:/usr/include/bits/exception.h:69:5:错误:重写“virtual const

共有1个答案

张建树
2023-03-14

exception::what()返回常量字符*,您不能更改它。但是您可以定义另一个方法来返回int,例如:

class BadLengthException : public std::length_error {
private:
    int x;
public:
    BadLengthException(int n) : std::length_error("bad length"), x(n) { }
    int getLength() const { return x; }
};

然后在catch语句中调用它,例如:

catch (const BadLengthException &e) {
    int length = e.getLength();
    ...
} 
 类似资料:
  • 当我执行一个web客户端请求(到一个外部api)并且响应是4xx或5xx代码时,我遇到了一个问题。建议处理该响应并使用自定义类检索响应 Web客户端配置是 处理过滤器.class MyExpcetion.class 但是我的客户回复总是给我一个默认格式 代替 怎么了?谢谢

  • 我真的需要温习一下我的异步等待和promise。我想要一些建议。 我正在对firebase firestore进行异步函数调用。函数应根据单个输入参数返回字符串。 该功能适用于1-1用户聊天。该功能是创建聊天/查找现有聊天,并返回其ID。 现在,我得到的作为返回值的和不知道为什么。除了返回之外,该函数还能正常工作。 我有两个功能。一个是React类组件生命周期方法,另一个是我的firebase异步

  • 我创建了一个小的测试项目来测试我的实现,下面是我的异常类头文件。 异常类的源文件为 在我的主应用程序中,我调用了一个函数,该函数抛出我的异常,并在try/catch中捕获它,如下所示: 现在要跑了。哦,天哪,我需要抛出一个异常 捕获的异常:这是我的异常错误。:( 相反,我得到的是 从我在各种帖子上看到的情况来看,我所做的是正确的,所以我错过了什么。

  • 问题内容: 我发现以下行为至少 很奇怪 : 在子句中使用时,该异常消失。那是个错误吗?那在任何地方都有记录吗? 但是真正的问题(我将标记为正确的答案)是: python开发人员允许这种奇怪行为的原因是什么? 问题答案: 您询问了有关Python开发人员的推理。我不能为他们说话,但是没有其他行为可以理解。函数可以返回值,也可以引发异常。它不能同时做到。“最终”子句的目的是提供“保证”运行的清除代码,

  • 它会返回我想要的结果。我还从https://stackoverflow.com/a/25899982/9367841尝试了这个 但不管用。

  • 这是由映射器捕获的。现在我要写: 这是捕捉所有意外异常并返回Jersey错误(错误代码)的正确方法吗?或者还有其他(更正确的)方式吗?