0
APMパターンを使用して非同期メソッドを公開するクラスの周りにラッパークラスを作成するシナリオがあります。私の考えは、ラッパークラスは、TAPパターンを利用して、以下exampledなどのラッパー・メソッドを公開するべきであるということです。APMからTAPにメソッドを変換するラッパークラスの例外処理
public class ClassToBeWrapped
{
...
// Throws ExceptionToBeWrapped when used incorrectly
public void BeginRead()
...
}
public class WrapperClass
{
...
public Task<int> ReadAsync()
{
return Task.Factory.FromAsync(classToBeWrapped.BeginRead,...);
}
}
ラッパークラスの消費者はReadAsyncメソッドを呼び出すと、私は包まれた方法のいずれかのカスタム例外をしたいです元の例外の代わりにラップされ、消費者に渡される。
public class ConsumerClass
{
...
try
{
await wrappedClass.ReadAsync(...);
}catch (WrappedException we)
{
// Does not catch WrappedException, only ExceptionToBeWrapped
...
}
しかし、私はいつもcatchメソッドでラップされていない例外をキャッチしてしまいます。私はReadAsyncメソッドでこれを処理しなければならないと思っていますが、それまでは失敗しています。
これを達成するためのアドバイスはありますか?
あなたは 'キャッチ(WrappedExceptionたち)' 'WrappedException'をキャッチしていないことを言っています。それの再現可能な例を投稿できますか?また、このスタートガイドが役に立つかもしれません:[APM実装のためのTAPラッパー](https://blog.stephencleary.com/2012/07/async-interop-with-iasyncresult.html) – JSteward