以下の内容はhttps://matatabi-ux.hateblo.jp/entry/2014/05/14/071255より取得しました。


UnobservedTaskException で未処理の例外を catch ・・・できなかった;

WinRT では UnobservedTaskException という未処理の例外を catch できるのではないかと思われるイベントがあります

イベントハンドラなど async void となるメソッド内で発生した例外は UnhandledException のイベントで catch できないですが、これなら catch できるのか?!と思い試してみました

/// <summary>
/// アプリケーション起動処理
/// </summary>
/// <param name="args"><see cref="LaunchActivatedEventArgs"/> の起動イベント引数</param>
/// <returns>Task</returns>
protected override Task OnLaunchApplication(LaunchActivatedEventArgs args)
{
    TaskScheduler.UnobservedTaskException += this.OnOccuredUnobservedTaskException;
    NavigationService.Navigate("Top", null);
    return Task.FromResult<object>(null);
}

/// <summary>
/// 監視されない例外発生イベントハンドラ
/// </summary>
/// <param name="sender">イベント発行者</param>
/// <param name="e">イベント引数</param>
private void OnOccuredUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
{
    Debug.WriteLine(e.Exception.ToString());
    e.SetObserved();
}

catch はこんな感じに仕掛けるみたいです

あとはイベントハンドラで無理やり例外を発生させてみると

/// <summary>
/// ボタンクリックイベントハンドラ
/// </summary>
/// <param name="sender">イベント発行者</param>
/// <param name="e">イベント引数</param>
private async void OnButtonCliced(object sender, RoutedEventArgs e)
{
    throw new ArgumentException("これはテストです");
}

・・・catch できませんでした; やっぱり糖衣構文とかを使って地道にメソッド内 try catch するしかないんでしょうか;




以上の内容はhttps://matatabi-ux.hateblo.jp/entry/2014/05/14/071255より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14