2013-06-25 31 views
18

'un bir parçası olarak yapıyorum. Dizelerin bir listesini yapıyorum ve sonra bir istisna atmak ve kullanıcı arabiriminin listeyi tutmasına ve kullanıcı için hata iletisini oluşturmasına izin vermek istiyorum.Geçiş nesnesi (List <string>), Exception

Bunu yapmanın bir yolu var mı?

+3

'UI listesi'ni ayrıştırmak let - Neden UI o sorumludur? –

+2

@HighCore: Ben sadece bir mesaj kutusu için okunabilir bir şey içine liste biçimlendirme anlamına gelir – Cemafor

cevap

31

İstisnalar Data özelliğini içerir (bu bir sözlüktür). İlave bilgi aktarmak için kullanılabilir:

try 
{ 
    // throw new Exception 
} 
catch(Exception e) 
{ 
    // whatever 
    e.Data["SomeData"] = new List<string>(); 
} 
+3

+1 utanç benim üzerimde - Bu özellik hakkında bilmiyordum –

+1

Çok teşekkür ederim! – Pacman

26

Sen keyfi veri aktarmak için Exception.Data özelliğini kullanabilirsiniz, ancak daha iyi bir (temizleyici) çözümü kendi özel istisna sınıfı İstisna türetilmiş oluşturmak ve eklemek olacaktır ne olursa olsun özellikleri sizi ona ihtiyacım var.

örnek kod:

public class MyException: Exception 
{ 
    public List<String> MyStrings { get; private set; } 

    public MyException(List<String> myStrings) 
    { 
     this.MyStrings = myStrings; 
    } 
} 
+4

Güçlü yazı tipini tercih ettiğimden alt sınıf fikrini beğeniyorum. – Paul

+2

güçlü yazım iyidir, ancak özel avantajı (cascading catch ifadeleri kullanarak) çalıştığınızda büyük avantajı daha temiz ve daha açık kodudur –

+2

Evet, güçlü [er] yazarak: D – Paul

İlgili konular