11

Android uygulamamda oldukça iyi çalışan özel bir içerik sağlayıcım var. Diğer uygulamaların içerik sağlayıcınıza da erişmesini bekliyorum. İstisnaları ve hataları iletmek için bazı temiz bir yol isterim, ancak Android içerik sağlayıcı çerçevesinin süreçler arasındaki istisnaları yaymanın herhangi bir yolunu sunmadığını söyleyebilirim.Android özel içerik sağlayıcısında (çapraz işlem) istisnalarla başa çıkmak

Arayan kişiye bir istisna durumunu nasıl belirtmeliyim? Bir şekilde onu iade edilen verilerime kodlamalı mıyım ve bunu kontrol etmek için istemcilere güvenmeli miyim? Alternatif var mı? Sıradan dönüş verisine kodlama yapılıyorsa, en iyi yol nedir? , RuntimeException alt sınıflarından biri bir kısa listesi vardır

+0

"ContentProvider" öğesinden bir çeşit "RuntimeException" yükseltmeyi denediğinizde, ne oldu? – CommonsWare

+0

"ContentProviderClient", "query" ve "insert" işlevlerinin kullanılması, sağlayıcı bir "RuntimeException" a bastığında, 'null' değerini döndürür. Logcat'ta 'JavaBinder' etiketli bir mesaj görebiliyorum: *** *** Uncaught remote exception! (İstisnalar henüz işlemler arasında desteklenmez.) ' –

cevap

14

(I? insert tarafından döndürülen Uri veya update veya delete tarafından döndürülen int hakkında bir query çağrı tarafından döndürülen Cursor için alternatiflerin sayısını ancak ne görebilir) Sağlayıcıda atılırsa, bir istemci uygulamasında yeniden atılır. Bunlar:

  • IllegalStateException
  • IllegalArgumentException
  • NullPointerException
  • SecurityException
  • BadParcelableException

Kaynak: IAE ve NPE söz Creating Content Providers; Diğerlerinin the Javadoc forParcel.writeException'a dayanarak çalışacağını tahmin ettim.

İstemci uygulaması yalnızca bir yığın izi veya neden yığını değil, ayrıntı iletisini alır. String (ayrıntı mesajı) içine kodlanabilen olağanüstü durum için bu makul bir seçenektir.

Yine diğer çözümlerle de ilgileniyorum.

+0

Verileri kodlamak için Android'in [org.json paketi] (http://developer.android.com/reference/org/json/package-summary.html) kullanarak sona erdim. bir "IllegalStateException" ın ayrıntı iletisi ve istemcilerin diğer "Özel Durum" sınıflarına yansımayı kullanarak çeviri yapmaları için bir API sağlar. –

İlgili konular