如果我遇到特定错误并在这种情况下返回一个对象,我需要抛出异常.
所以我想做这样的事情:
if(error)
return obj;
throw new FaultException(string.Format("Error found with ID={0}", ID))
Run Code Online (Sandbox Code Playgroud)
这显然不会起作用,因为return会阻止抛出异常.
任何人都可以建议什么是实现这一目标的最佳途径.我可以以某种方式传递异常中的对象吗?
谢谢
在某些方法的上下文中,抛出异常和返回结果是相互排斥的事物.
因此,如果要为客户端代码提供附加信息,可以使用自定义属性实现自定义异常(从Exception类派生).
[Serializable]
public class MyException : Exception
{
public MyCustomObject CustomObject { get; private set; }
public MyException(MyCustomObject customObject)
{
CustomObject = customObject;
}
public MyException(string message, MyCustomObject customObject)
: base(message)
{
CustomObject = customObject;
}
public MyException(string message, Exception inner, MyCustomObject customObject)
: base(message, inner)
{
CustomObject = customObject;
}
protected MyException(
SerializationInfo info,
StreamingContext context)
: base(info, context)
{
// TODO: Implement serializable stuff.
}
#region Overrides of Exception
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
// TODO: Implement serializable stuff.
base.GetObjectData(info, context);
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
现在你可以抛出它!
throw new MyException(obj);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2372 次 |
| 最近记录: |