try
{
  Hoge hoge = new Hoge();
  var result = await hoge.GetAsync(); // A
}
catch (Excepiton ex)
{
  Debug.WriteLine(ex);
}

public class Hoge
{
  public async Task<int> GetAsync()
  {
    await HageAsync(); // @

    hoge.xxxChanged += (sender, args) =>
    {
      await HageAsync(); // A
    };

    ………
  }
}

Aの呼び出しの際、
@で起こった例外はキャッチできるのですが
Aで起こった例外はキャッチできません。
どうやれば拾えますか?