Bu örnek "başarısız":Try-Catch zaman uyumsuz İstisnalar
olduğunustatic async void Main(string[] args)
{
try
{
await TaskEx.Run(() => { throw new Exception("failure"); });
}
catch (Exception)
{
throw new Exception("success");
}
}
, metni "başarısızlık" ile istisna kadar kabarcıklar.
static async void Main(string[] args)
{
try
{
await SafeRun(() => { throw new Exception("failure"); });
}
catch (Exception)
{
throw new Exception("success");
}
}
static async Task SafeRun(Action action)
{
var ex = default(Exception);
await TaskEx.Run(() =>
{
try
{
action();
}
catch (Exception _)
{
ex = _;
}
});
if (ex != default(Exception))
throw ex;
}
ya da yardım etmedi:
Sonra bu geçici çözümü çalıştı.Async CTP yenileme kurulumumun askıya alınabileceğini varsayalım.
Bu kod beklediğim gibi çalışırsa ("başarı", "başarısızlık" artar) veya bu şekilde çalışmak için "varsayılan" olmaz. Ve eğer değilse, nasıl çalışırsın?
Bu, uyumsuzluk sınamak için bir konsol uygulamasından geliyor, bu yüzden benim durumumda en üst düzey yöntem Ana yöntemdir. –
@Ben cevabı, bir hata olabileceği veya olmayabileceği, ancak bir "eşzamansız" giriş noktasının tanımlanamayan davranışından kaynaklandığına dair cevabı güncelledim. –