यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
त्रुटि प्रबंधन और लॉगिंग
केंद्रीय बिंदु है अपवादों का एक एकल फ़नल रखना और “जो त्रुटि उपयोगकर्ता देखता है” को “लॉग के लिए त्रुटि” से अलग करना।
फ़नल: Debug.handle(e) और Debug.log(...)
try {
arriscado();
} catch (Exception e) {
Debug.handle(e); // एक समान रूप से लॉग और हैंडल करता है (एकल फ़नल)
}
Debug.log("estado:", valor); // मुक्त निदान
फ्रेमवर्क के एनिमेशन और tasks पहले से ही Debug.handle के माध्यम से आंतरिक रूप से Throwable को कैप्चर करते हैं।
फ़नल क्यों: paint thread पर एक असंभाला अपवाद फ़्रेम को गिरा देता है — इसे चैनल करना क्रैश से बचाता है और
इंस्ट्रूमेंट करने के लिए एक एकल बिंदु देता है।
विशिष्ट त्रुटियों पर प्रतिक्रिया करें (सब कुछ निगलें नहीं)
try (SqliteDb db = SqliteDb.open("app.db")) {
db.execute("INSERT INTO cliente(email) VALUES(?)", email);
} catch (SqliteException e) {
if (e.code == Sqlite.CONSTRAINT) Hint.show("E-mail já cadastrado", 2000); // 19
else if (e.code == Sqlite.BUSY) Hint.show("Banco ocupado, tente de novo", 2000); // 5
else Debug.handle(e);
}
SqliteException.code SQLite कोड लाता है (Sqlite.OK/BUSY/CONSTRAINT/LOCKED/...)। यही अन्य टाइप किए गए
परिणामों के लिए भी लागू होता है (उदा.: बायोमेट्रिक्स का AuthResult.ERROR)।
बैकग्राउंड callbacks की त्रुटियाँ → onUI के साथ UI में दिखाएँ
Callbacks (नेटवर्क, GPS, BLE) paint thread के बाहर चलते हैं। उपयोगकर्ता को सूचित करने के लिए, onUI के साथ
marshal करें:
new Thread(() -> {
try { sincronizar(); }
catch (Exception e) {
Component.onUI(() -> Hint.show("Falha ao sincronizar", 2000)); // Hint = अवरोधक नहीं
Debug.handle(e);
}
}).start();
- गैर-अवरोधक चेतावनियों के लिए
Hint.show(...); जब उपयोगकर्ता के निर्णय की आवश्यकता हो तबAlert। - अलग करें: उपयोगकर्ता को क्या देखना चाहिए (
Hint/Alert) बनाम जो केवल लॉग में जाता है (Debug.log/handle)।
डिबग फ़्लैग
Debug.traceKeyboard, Debug.showFPS, Debug.beepOnGC विकास के दौरान निदान करने में मदद करते हैं।
अच्छी प्रथाएँ
- जो विशेष रूप से संभालने योग्य नहीं है उसके लिए एक फ़नल (
Debug.handle)। - विशिष्ट कोड (
CONSTRAINT,BUSY) को उपयोगकर्ता के लिए उपयोगी संदेश के साथ संभालें। - बैकग्राउंड त्रुटि →
onUI+Hint/Alert; callback में कभी सीधे UI को न छुएँ।
आम गलतियाँ
- खाली
catch (Exception e) {}— समस्या को निगल लेता है। - उपयोगकर्ता को कच्चा stack trace दिखाना (स्पष्ट संदेश के साथ
Hint/Alertका उपयोग करें; stack लॉग में जाता है)। onUIके बिना बैकग्राउंड थ्रेड से UI को छूना।