gpt4 book ai didi

.net-4.0 - c++/cli 自定义异常 - 标准构造函数

转载 作者:行者123 更新时间:2023-12-04 06:21:07 25 4
gpt4 key购买 nike

为了避免来自 C++/CLI 库的 FxCop 警告“不要引发保留的异常”,所以我决定分解并编写自己的异常类型。

[Serializable]
public ref class CaptureException : public Exception
{
public:
CaptureException() : Exception() {}
CaptureException(String^ message) : Exception(message) {}
CaptureException(String^ message, Exception^ inner) : Exception(message, inner) {}
protected:
CaptureException(System::Runtime::Serialization::SerializationInfo^ info, System::Runtime::Serialization::StreamingContext^ context) : Exception(info, context) {}
};

这不会编译说明

error C2664: 'System::Exception::Exception(System::String ^,System::Exception ^)' : cannot convert parameter 1 from 'System::Runtime::Serialization::SerializationInfo ^' to 'System::String ^'

我不确定为什么会收到此错误。 C++/CLI 没有完整的异常类吗?我只是想为我的异常实现标准构造函数,在 C# 中它看起来像这样并且编译得很好。

[Serializable]
public class CaptureException : Exception
{
public DatabaseConnectionException() { }
public CaptureException (string message) : base(message) { }
public CaptureException (string message, Exception inner) : base(message, inner) { }
protected CaptureException (
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base(info, context) { }
}

最佳答案

StreamingContext 是一种值类型(即结构),因此您需要移除帽子 ^:

    CaptureException(System::Runtime::Serialization::SerializationInfo^ info, System::Runtime::Serialization::StreamingContext context) : Exception(info, context) 
{}

关于.net-4.0 - c++/cli 自定义异常 - 标准构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8436485/

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