SORU
11 EYLÜL 2008, PERŞEMBE


C# nasıl yığın izleme kaybetmeden InnerException yeniden oluşturma miyim?

Yansıma yoluyla, bir istisna neden olabilecek bir yöntem arıyorum. Nasıl sarıcı yansıması koyar olmadan beni arayan bir istisnası geçebilir miyim? Bu InnerException rethrowing duyuyorum, ama bu yığın izleme yok. Örnek kod:

    public void test1()
    {
        // Throw an exception for testing purposes
        throw new ArgumentException("test1");
    }

    void test2()
    {
        try
        {
            MethodInfo mi = typeof(Program).GetMethod("test1");
            mi.Invoke(this, null);
        }
        catch (TargetInvocationException tiex)
        {
            // Throw the new exception
            throw tiex.InnerException;
        }
    }

CEVAP
13 HAZİRAN 2013, PERŞEMBE


.NET 4.5şimdi ExceptionDispatchInfo sınıfı var.

Bu değiştirmeden bir istisna ve yeniden fırlat stack trace: yakalama sağlar

try
{
    task.Wait();
}
catch(AggregateException ex)
{
    ExceptionDispatchInfo.Capture(ex.InnerException).Throw();
}

Bu herhangi bir özel durum değil, sadece AggregateException üzerinde çalışır.

await C nedeniyle tanıtıldı# asenkron dili yapmak için AggregateException örneklerden iç özel yeteneğini inceliyor hangi dil özelliği, senkron dil özellikleri gibi daha fazla özellik.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AutoStream's Garage419

    AutoStream's

    15 EKİM 2007
  • JonnyEthco

    JonnyEthco

    5 EKİM 2006
  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006