2011-01-28 29 views
14

Ben vahşi bir kötü gösteri ortaya çıkarıyorum, ve parmağımı üzerine koyamıyorum. Global Try/Catch bloğuna sahip olmanın bir yolu veya Monotouch'ta işlenmemiş olan herhangi bir özel durumla başa çıkmak için bir yol var mı.Monotouch Küresel İstisna yönetimi

UIApplication.Main(args) Bir yakalama yakalama yapabilir miyim?

Kural dışı durumun yakalanmasından sonra, sonuçları görüntülemek için bir UIAlertView göstermek istiyorum.

Herhangi bir yardım?

+0

Bunun Monotouch'ta olup olmadığından emin olun, ancak windows'ta http://msdn.microsoft.com/en-us/library/system.windows.application.unhandledexception(v=vs.95).aspx kullanırsınız – Nate

cevap

14

UIApplication.Main (args) dosyasını {} yakalama {} denemeye alabilirsiniz, ancak tüm kullanıcı arayüzünü de içeren tüm yığını çözdüğümüzden bu noktada bir UIAlertView gösteremezsiniz. Yapabilecekleriniz istisnayı, uygulama paketinizin Belgeler klasöründeki bir kilitlenme dosyasına kaydettirmek ve bir sonraki lansmanda bunu veya bir web hizmetine yüklemeyi göstermek.

Exceptioneer çocuklar, bakmaya değer olabilecek MonoTouch desteği üzerinde çalışıyorlardı.

+0

Hey Geoff, cevabımda aşağıda bir soru göreceksiniz ... – Ethan

+1

Eğer Exceptioneer terkediyorsa ya da çalışmıyorsa çalışmayı deneyin ... – tomfanning

+2

Öyle görünüyor. Üzgün ​​zamanlar. – tomfanning

1

İşlenmeyen özel durum işleyicisini, örneğin AppDomain.CurrentDomain.UnhandledException olayını kullanarak başarılı oldum. Bu, işlenmemiş istisnaların çoğunu (ancak hepsi değil) yakalar gibi görünüyor. Yönetilmeyen kodda bulunan kilitlenmeler, uygulamanın bu olayı çağırmadan başarısız olmasına neden olabilir.

Geoff: UIApplication.Main'dan düşen istisnaları yakalamanın yanısıra bu olayı yakalayabilir miyiz, yoksa yöntemlerden biri tercih edilir mi?

+0

Gerçekten önemli değil, ancak yerel koddaki çökmeler sizi yırtacak. App temelde bu noktada bozuk ve bu incelikle işlemek için yapabileceğimiz bir şey yok. Monotouch topluluk üyelerinden biri, stdout ve stderr'i sürümlerde dup2 (3) kullanarak bir dosyaya yeniden yönlendirmeyi denedi, böylece bir sonraki çalıştırmada kendi kendine çakışma yükleyebilirdi, ki bu da yapılabilecek bir şey. –