我对这个话题的理解显然出了问题,但我无法找到答案。我想要实现的是一个名为CustomException
的自定义异常。我所做的是编译并且可以工作,但我认为我正在以错误的方式使用头文件。所以我做了以下3个文件:
的main.cpp
#include "exception.h"
int main() {
try {
throw CustomException();
} catch (CustomException ce) {
ce.doSomething();
}
}
exception.h
#include <exception>
class CustomException : public std::exception {
private:
char* msg;
public:
CustomException() {};
void doSomething() {};
};
exception.cpp
#include "exception.h"
CustomException::CustomException() {
}
void CustomException::doSomething() {
printf("Hello World!");
}
运行后,这是命令行:
$ g++ main.cpp -o main.o
$ ./main.o
$
但我正在寻找的行为是,#34; Hello World!&#34;打印到命令行。我更习惯于JAVA,所以也许这就是为什么我对C ++有一个粗略的开始。无论如何,我希望你能帮助我,因为我发现的教程彼此不同,对我没有意义。
答案 0 :(得分:4)
您的问题是,您要定义CustomException::doSomething()
无所作为:{}
。省略exception.h中的{}
方法定义。然后编译并将exception.cpp链接到二进制文件:
$ g++ -c main.cpp -o main.o
$ g++ -c exception.cpp -o exception.o
$ g++ main.o exception.o -o main
$ ./main
请注意&#34; .o&#34;后缀通常用于目标文件,而不是用于可执行文件。
答案 1 :(得分:2)
除了user3553031所说的,您的代码还有另一个可能的问题。在C ++中,您应该通过引用而不是值来捕获异常。否则会导致问题。请参阅:C++ catch blocks - catch exception by value or reference?