gpt4 book ai didi

c++ - 如何正确处理 header 中的异常?

转载 作者:行者123 更新时间:2023-11-30 01:52:11 27 4
gpt4 key购买 nike

我正在对一个包含多个项目的程序进行异常处理。我已经决定在一个专门用于异常处理的项目中有一个标题“ExceptionHandling”。因此,我想出了以下代码: /* 这个对象管理所有可能的异常:标准/自动和特定 */

#ifndef EXCEPTIONHANDLING_H
#define EXCEPTIONHANDLING_H

//#include "Stdafx.h"

#include <iostream>
#include <exception> // Standard exceptions
using namespace std;

// Longitude Exception
class LonEx: public exception
{
virtual const char* what() const throw()
{
return "**** ERROR: Longitude cannot be higher than 180 degrees\n\n";
}
} exceptionLongitude;

// Negative Exception
class NegativeEx: public exception
{
virtual const char* what() const throw()
{
return "**** ERROR: Negative value is not possible in ";
}
} exceptionNegative;

// Xml exception (file cannot be opened)
class XmlEx: public exception
{
virtual const char* what() const throw()
{
return "**** ERROR: XML parsed with errors. Unable to open file called ";
}
} exceptionXml;

#endif

然后,在捕获异常的文件中,我将继续执行以下操作:“throw exceptionLatitude;”。

问题是,当我在两个 cpp 文件中使用它时,它会给我错误 LNK2005(已定义)。我曾尝试将定义放在 cpp 文件中,但我没有成功。谁能帮我?我也想知道在标题中有这么多类是否好。提前致谢。

最佳答案

您尝试为异常使用全局变量。尝试简化并使用本地对象:而不是声明类和变量,只需声明类,例如

class LonEx: public exception
{
virtual const char* what() const throw()
{
return "**** ERROR: Longitude cannot be higher than 180 degrees\n\n";
}
};

没有exceptionLongitude。然后当你想抛出时使用

throw LonEx();

关于c++ - 如何正确处理 header 中的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25020075/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com