首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CustomException头文件

CustomException头文件
EN

Stack Overflow用户
提问于 2014-05-10 22:51:53
回答 2查看 245关注 0票数 0

显然,我对这个话题的理解出了问题,但我找不出在哪里。我想要实现的是一个名为CustomException的自定义异常。我所做的是编译和工作的,但我确实认为我使用头文件的方式是错误的。因此,我制作了以下3个文件:

  1. main.cpp #包括“Exction.h”int main() {试试{抛出CustomException();} catch (CustomException ce) { ce.doSomething();}}
  2. exception.h #包括类CustomException : public std::exception { private: char* msg;public: CustomException() {};void doSomething() {};};
  3. exception.cpp #包含“Exction.h”CustomException::CustomException() {}::doSomething(){ printf("Hello World!");}

在我运行之后,下面是命令行:

代码语言:javascript
复制
$ g++ main.cpp -o main.o
$ ./main.o
$

但是我想要的行为是,“你好世界!”打印到命令行。我更习惯于JAVA,所以这也许就是为什么我对C++有了一个粗略的开端。无论如何,我希望你能帮助我,因为我发现的教程彼此不一样,对我来说没有意义。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-10 22:56:35

您的问题是,您将CustomException::doSomething()定义为什么都不做:{}。在Exction.h中省略{}方法定义。然后编译并将exception.cpp链接到二进制文件中:

代码语言:javascript
复制
$ g++ -c main.cpp -o main.o
$ g++ -c exception.cpp -o exception.o
$ g++ main.o exception.o -o main
$ ./main

注意,".o“后缀通常用于对象文件,而不是可执行文件。

票数 4
EN

Stack Overflow用户

发布于 2014-05-10 23:10:15

除了user3553031所说的,您的代码还有另一个可能的问题。在C++中,您应该通过引用捕获异常,而不是通过值捕获异常。否则就会引起问题。参见:C++ catch blocks - catch exception by value or reference?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23587129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档