有没有人有异常处理的最佳实践?
在网上搜索时,我在代码级别找到了很多最佳实践(不要抓住一般异常,不要重新抛出新的异常等).我所寻找的是更高级别的最佳实践,例如:
非常感谢任何想法和帮助,谢谢.
当反序列化用EnumMemberAttribute修饰的带有包含空格的值的标记枚举时,将抛出SerializationException.值中的空格被视为分隔符.
有没有办法更改分隔符或将值放在引号中?或者是否有更简单的解决方案?
我正在考虑的选项是:
但我真的觉得这应该是可配置的东西或其他人已经解决的东西.但我找不到任何东西.
我把问题归结为一个简单的单元测试.以下代码导致:
消息=无效的枚举值' Test '无法反序列化为'UnitTests.TestEnum'类型.确保存在必要的枚举值,并且如果类型具有DataContractAttribute属性,则使用EnumMemberAttribute属性标记.来源= System.Runtime.Serialization
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
using FluentAssertions;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTests
{
[TestClass]
public class EnumSerizalizationTests
{
[TestMethod]
public void SerializingAndDesrializingAFlaggedEnumShouldResultInSameEnumValues()
{
//Arrange
var orgObject = new TestClass { Value = TestEnum.TestValue1 | TestEnum.TestValue2 };
//Act
var temp = DataContractSerializeObject(orgObject);
var newObject = DataContractDeSerializeObject<TestClass>(temp);
//Assert
newObject.ShouldBeEquivalentTo(orgObject, "Roundtripping serialization should result in same value");
}
public string DataContractSerializeObject<T>(T objectToSerialize)
{
using (var output = new StringWriter()) …Run Code Online (Sandbox Code Playgroud) 在我正在编写的一个C#中,我需要以相同的方式处理具有相同签名的多个方法.此外,将来可能会有更多这些方法.我没有反复重复同样的逻辑,而是想到了以下几点:
private delegate bool cleanStep(BuildData bd, out String strFailure);
List<cleanStep> steps = new List<cleanStep>();
steps.Add(WriteReadme);
steps.Add(DeleteFiles);
steps.Add(TFSHelper.DeleteLabel);
steps.Add(TFSHelper.DeleteBuild);
List<cleanStep>.Enumerator enumerator = steps.GetEnumerator();
bool result = true;
while (result && enumerator.MoveNext())
{
result = enumerator.Current.Invoke(build, out strFailure);
if (!result)
{
logger.Write(LogTypes.Error, strFailure);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这有一些很好的功能,但它也有点过于引擎和混淆.
你能感谢一个更好的方法吗?
BTW:
谢谢.