是否可以在Token类的Dispose方法中标记异常? E.g:
//code before
using(var e = new Token()){
//..
throw new Exception();
//..
}
//code after
我需要的是取消异常并继续使用代码。
如果发生异常并不重要。我知道我可以使用try / catch,但在这种情况下,如果可能,我想绕过去。
我在by:
中检测到异常bool isExceptionOccurred = Marshal.GetExceptionPointers() != IntPtr.Zero || Marshal.GetExceptionCode() != 0;
答案 0 :(得分:-1)
最好的方法是使用一个catch块,因为那是它的用途。不要试图将您的业务需求转换为语言,使用该语言来编写您需要的内容。
创建一个抽象层来处理你的泄漏异常"需求。例如:
public sealed class ExceptionGuard<T>:IDisposable where T:IDisposable
{
private readonly T instance;
public bool ExceptionOccurred { get; private set; }
public ExceptionGuard(T instance) { this.instance = instance; }
public void Use(Action<T> useInstance)
{
try
{
useInstance(instance);
}
catch(Exception ex)
{
this.ExceptionOccurred = true;
// Hopefully do something with your exception
}
}
public void Dispose()
{
Dispose(true);
}
private void Dispose(bool disposing)
{
if (disposing)
{
this.instance.Dispose();
}
}
}
在那之后,消费和检查是一件相当简单的事情。
var guard = new ExceptionGuard(new Token());
using (guard)
{
guard.Use(token => /* Do something with your token */ );
}
if (guard.ExceptionOccurred)
{
// React accordingly to this
}