gpt4 book ai didi

c# - 在 C# 中序列化和反序列化 Oracle.DataAccess.OracleException

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:50 25 4
gpt4 key购买 nike

OracleException 没有公共(public)构造函数,也没有任何获取新实例的方法。我尝试了我的 XmlSerializerHelper 类,但它需要一个公共(public)无参数构造函数。

我使用 BinaryFormatter 序列化 OracleException 并将其写入文件。

我如何在文件中序列化 OracleException,并使用 XmlSerializer 反序列化 - 出于测试原因 -?

引用: http://geekswithblogs.net/WillSmith/archive/2008/07/25/testing-oracleexception.aspx

PD:SoapFormatter 还是 BinaryFormatter 更好?

代码

SerializationHelper.Serialize(@"C:\Temp\ExcepcionOracle.bin", ex);

var exOra = SerializationHelper.Deserialize(@"C:\Temp\ExcepcionOracle.bin");


public static void Serialize(string fileName, Object obj)
{
var binaryFormatter = new BinaryFormatter();
var fileStream = new FileStream(fileName, FileMode.Create);
try
{
binaryFormatter.Serialize(fileStream, obj);
}
catch (SerializationException ex)
{
throw new ApplicationException("The object graph could not be serialized", ex);
}
finally
{
fileStream.Close();
}
}


public static object Deserialize(string fileName)
{
var binaryFormatter = new BinaryFormatter();
var fileStream = new FileStream(fileName, FileMode.Open);
try
{
fileStream.Seek(0, SeekOrigin.Begin);
return binaryFormatter.Deserialize(fileStream);
}
catch (SerializationException ex)
{
throw new ApplicationException("Serialization Exception: " + ex.Message);
}
finally
{
fileStream.Close();
}
return null;
}

最佳答案

Exception 之类的东西不太适合 xml 序列化程序(尤其是 XmlSerializer)。除了构造函数问题(有些序列化程序可以解决,有些则不能),您还可能遇到意外子类和集合中任意数据的问题。

如果您要序列化为 xml,您应该只捕获所需的关键信息 - 也许是 .Message 和其他一些东西。还要注意,在客户端/服务器应用程序中,客户端实际上不需要知道很多失败的细节——这些细节应该保留在服务器上。它要么是已执行 错误(无效参数、登录问题、配额限制等),要么是意外 错误。在后一种情况下:只是说发生了意外错误。详细信息仅对开发人员有用,并且开发人员应该已经可以访问服务器的错误日志。

关于c# - 在 C# 中序列化和反序列化 Oracle.DataAccess.OracleException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8009266/

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