await しているタスクの中で発生した例外は普通にキャッチできる。

try
{
    await Task.Run(() =>
    {
        throw new Exception("hoge");
    });
}
catch (Exception ex)
{
    Log.Debug("例外: " + ex.Message);
}

・デバッガーは「ユーザーが処理していない例外」としてストップするが、継続実行で普通にキャッチされる
・Task.Factory.StartNew でも可

await しないとキャッチできない。

.NET 9 / Visual Studio 2022 17.13.1