SORU
27 NİSAN 2009, PAZARTESİ


Genel olarak bir WPF uygulama özel durumları yakalamak?

Bazı bölümleri çalışma zamanında özel durum nerede WPF uygulaması yapıyoruz. Eğer hiçbir şey (VB gibi On Error Resume Next) olmuş gibi dünyada herhangi bir özel durum yakalamak ve onları günlük isterdim, ama aksi takdirde programın çalışması devam ediyor.

Bu C mümkün#? Ve eğer tam olarak nerede özel durum işleme kodu koymak gereksin ki?

Şu andatry/catch bir etrafına sarın, nerede ve ortaya çıkabilecek tüm özel durumları yakalamak olan herhangi bir nokta göremiyorum. Ve o zaman bile yakalamak yüzünden idam edilmiş ne varsa terk ederdim. Ya korkunç bir şekilde yanlış yöne burada diye düşünmeye başladım.

ETA:Çünkü çok aşağıda insanlar çekti: uygulama nükleer santralleri kontrol etmek için değil. Eğer bu kadar değil çökerse büyük bir anlaşma ama genelde UI-ilgili rastgele özel durumlar için kullanılan olurdu bağlamında bir sıkıntı vardır. (Ve muhtemelen hala) onlardan bir kaç tane vardı ve bir eklenti mimarisi kullanır ve diğerleri tarafından (ayrıca bu durum; yani öğrenciler . uzatılabilir beri ^em>hayırtamamen hatasız kod yazmak mümkün deneyimli geliştirici).

Yakalanan özel durumlar için bir günlük dosyası, tam bir yığın İzleme dahil. onları günlük yaparım Bu egzersiz bütün mesele buydu. Sadece VB için benim benzetme götürüyorlardı o kişilere karşı çok anlamıyla OERN.

Körü körüne hataları bazı sınıfları görmezden tehlikeli ve başvurum bozuk olabilir örnek biliyorum. Bu program herkes için kritik görev değil önce söyledi. Kimse aklı başında üzerinde insan uygarlığının hayatta kalma bahis. Sadece belirli tasarım yaklaşımları wrt test etmek için küçük bir araçtır. yazılım mühendisliği.

Uygulamayı hemen kullanmak için bir istisna olabilir vardır:

  • İstisna işleme – hata iletişim ve uygulamadan çıkın. Deney tekrarlanacak, ama başka bir konu ile olasılığı vardır. Hata talihsiz olan oturum.
  • – İyi huylu hata yakalanan, zarar yok genel özel durum işleme. Bu sık karşılaşılan durum gelişim sırasında gördüğümüz tüm hataları yargılanmalıdır. Bu tür hataları görmezden gelerek hemen sonuçları olmalıdır; temel veri yapıları kolayca bu hayatta onlar kadar iyi test edilmiştir.
  • Genel durum – ciddi bir hata, büyük bir olasılıkla daha sonraki bir noktada kazasında mahsur kullanma. Bu nadiren gerçekleşir. Şimdiye kadar hiç görmedik. Hata neyse kaydedilir ve bir kaza kaçınılmaz olabilir. Bu kavramsal olarak ilk davaya benzer. Bunun dışında iz yığını var. Ve çoğu durumda kullanıcı bile fark etmez.

Deney verileri program tarafından oluşturulan gelince: ciddi Bir hata en kötü ihtimalle sadece kayıtlı veri yok neden olur. Deneyin sonucu hiç bu kadar biraz değişiklik ince değişiklikler oldukça düşüktür. Ve hatta bu durumda, eğer sonuç şüpheli görünüyor eğer hata yapmış; hala olsaydı, tam bir aykırı ise veri noktası atmak.

Özetlemek gerekirse: Evet, kendimi yine de en azından kısmen aklı başında ve program bırakan küresel istisna yönetimi rutin ille de tamamen kötü olarak görmüyorum düşünüyorum. Daha önce iki kez söylediği gibi, böyle bir kararın geçerli, uygulamaya bağlı olabilir. Bu durumda geçerli bir karar ve tam ve mutlak saçmalık olmadığına karar oldu.Başka bir uygulama için bu kararı farklı olabilir.Ama lütfen hataları görmezden geliyoruz çünkü bana ya da bu proje üzerinde potansiyel olarak dünyayı havaya uçurmaya çalışan diğer insanları suçlama.

Yan not: tam olarak bu uygulama için bir kullanıcı Yok. Özel durumlar için Kullanıcı kabarcık zorlanıyor maliyeti ilk etapta çok farklı zaten olacağı milyonlarca insan tarafından kullanılan alır Windows veya Ofis gibi bir şey değil.

CEVAP
27 NİSAN 2009, PAZARTESİ


Application.DispatcherUnhandledException Event kullanın. Bir özet için this question (Drew Noakes' answer) bkz.

Veritabanına kaydetmek için çalışırken uygulama, sonra bir yığın taşması gibi bir başarılı sürdürme engel, bellek yorgun, ya da kaybolmuş bir ağ bağlantısı olan hala istisnalar olacak unutmayın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • hanksranger

    hanksranger

    6 EKİM 2009
  • TeeMayneTV

    TeeMayneTV

    27 Kasım 2010