Λειτουργικά συστήματα

Γνώση Υπολογιστών >> Λειτουργικά συστήματα >  >> Android

Ποιες είναι οι εξαιρέσεις του Android;

Οι εξαιρέσεις Android είναι σφάλματα χρόνου εκτέλεσης που διαταράσσουν την κανονική ροή της εκτέλεσης μιας εφαρμογής. Είναι μια υποκατηγορία της τάξης `throwable` στην Java (και Kotlin, η οποία διαλείπει άψογα με το χειρισμό εξαίρεσης της Java). Δηλώνουν ότι έχει συμβεί κάτι απροσδόκητο, απαιτώντας από την εφαρμογή να χειριστεί την κατάσταση ή να τερματίσει χαριτωμένα (για να αποφευχθούν συντριβές).

Το Android δεν διαθέτει ένα μοναδικό σύνολο εξαιρέσεων * συγκεκριμένο * στην ίδια την πλατφόρμα Android, αλλά χρησιμοποιεί τις εξαιρέσεις Java και εισάγει κάποιες συνηθισμένες καταστάσεις στο περιβάλλον Android. Αυτά μπορούν να κατηγοριοποιηθούν ευρέως ως:

1. Κοινές εξαιρέσεις Java: Πολλές τυποποιημένες εξαιρέσεις Java είναι επίσης σχετικές με την ανάπτυξη του Android:

* `nullpointerexception` (npe): Η πιο συνηθισμένη εξαίρεση. Εμφανίζεται όταν προσπαθείτε να αποκτήσετε πρόσβαση σε ένα μέλος (μέθοδο ή πεδίο) ενός αντικειμένου που είναι σήμερα «null».

* `indexoutofboundsexception`: Που ρίχνονται όταν προσπαθείτε να αποκτήσετε πρόσβαση σε ένα στοιχείο πίνακα ή λίστα χρησιμοποιώντας ένα δείκτη που είναι εκτός ορίων (π.χ. προσπαθώντας να αποκτήσετε πρόσβαση στο 10ο στοιχείο ενός πίνακα 5 στοιχείων).

* `παράνομοAlargumentException`: Που ρίχνεται όταν μια μέθοδος λαμβάνει ένα επιχείρημα ότι δεν έχει σχεδιαστεί για να χειρίζεται.

* `παράνομη κατάσταση): Που ρίχνεται όταν μια μέθοδος καλείται σε ακατάλληλο χρόνο στον κύκλο ζωής ενός αντικειμένου.

* `classcastexception`: Που ρίχνονται όταν προσπαθείτε να ρίξετε ένα αντικείμενο σε έναν τύπο που δεν είναι συμβατό.

* `arithmeticexception`: Εμφανίζεται κατά τη διάρκεια των αριθμητικών λειτουργιών, όπως η διαίρεση με μηδέν.

* `ioexception`: Εμφανίζεται κατά τη διάρκεια λειτουργιών εισόδου/εξόδου (π.χ. ανάγνωση από ένα αρχείο ή δίκτυο).

* `RuntimeException`: Η κατηγορία βάσης για πολλές μη ελεγχόμενες εξαιρέσεις (εξαιρέσεις που δεν χρειάζεται να αντιμετωπίζονται ρητά στον κώδικα). `Nullpointerexception` και` indexoutofboundsexception` είναι παραδείγματα.

2. Εξαιρέσεις ειδικών για το Android (ή καταστάσεις που οδηγούν σε κοινές εξαιρέσεις): Αν και δεν είναι ξεχωριστή εξαίρεση *τάξεις *, αυτά είναι κοινά σενάρια σφάλματος στην ανάπτυξη Android:

* Θέματα δικτύου: Οι εξαιρέσεις που σχετίζονται με τα προβλήματα συνδεσιμότητας του δικτύου συχνά εκδηλώνονται ως «ioexception» ή υποκατηγορίες (π.χ., «sockettimeoutexception», `unknownhostexception»).

* Θέματα δικαιωμάτων: Εάν η εφαρμογή σας προσπαθεί να αποκτήσει πρόσβαση σε έναν πόρο (όπως η κάμερα ή η τοποθεσία) χωρίς τα απαραίτητα δικαιώματα, μπορεί να οδηγήσει σε «SecurityException» ή στη λειτουργία απλά αποτυγχάνει σιωπηλά.

* Θέματα πόρων: Προσπαθώντας να αποκτήσετε πρόσβαση σε πόρους που δεν υπάρχουν (π.χ. αρχείο διάταξης ή σχεδίου) μπορεί να οδηγήσει σε `resources.notfoundexception '.

* Θέματα συγχώρεσης: Προβλήματα που σχετίζονται με το multi-threading (π.χ. συνθήκες φυλής, αδιεξόδου) συχνά εκδηλώνονται ως «παράνομη διαταραχή» ή άλλη απροσδόκητη συμπεριφορά.

* Θέματα ζωής: Οι μεθόδους κλήσης σε μια δραστηριότητα ή άλλο στοιχείο σε λάθος σημείο του κύκλου ζωής του μπορούν να οδηγήσουν σε «παράνομη κατάσταση).

* Θέματα βάσης δεδομένων: Τα σφάλματα που αλληλεπιδρούν με βάσεις δεδομένων (όπως το SQLite) μπορούν να οδηγήσουν σε «sqlexception».

* Χαμηλή μνήμη: Όταν το σύστημα είναι χαμηλό στη μνήμη, μπορεί να οδηγήσει σε συντριβές, συχνά έμμεσα μέσω ενός `outofmemoryerror '(αν και τεχνικά όχι εξαίρεση με τον ίδιο τρόπο όπως και άλλοι).

Εξαιρέσεις χειρισμού:

Το Android, όπως και η Java, χρησιμοποιεί μπλοκ `try-catch` για να χειριστεί εξαιρέσεις:

`` `java

Δοκιμάστε {

// κωδικός που μπορεί να ρίξει μια εξαίρεση

int αποτέλεσμα =10/0; // Αυτό θα προκαλέσει μια αριθμητική σύλληψη

} catch (arithmeticexception e) {

// χειριστείτε την Arithmeticexception

Log.e ("myapp", "τμήμα με μηδέν!", E);

} catch (Εξαίρεση e) {// Πιάσε οποιαδήποτε άλλη εξαίρεση

Log.e ("myapp", "Παρουσιάστηκε σφάλμα:" + e.getMessage (), e);

} Τέλος {

// Ο κωδικός που εκτελεί πάντα, ανεξάρτητα από το αν συνέβη μια εξαίρεση. (π.χ. πόροι κλεισίματος)

}

`` `

Θυμηθείτε να χειρίζεστε τις εξαιρέσεις κατάλληλα για να εμποδίσετε τη συντριβή της εφαρμογής σας και να δώσετε καλύτερη εμπειρία χρήστη. Ο σωστός χειρισμός σφαλμάτων είναι ζωτικής σημασίας για την ισχυρή ανάπτυξη εφαρμογών Android.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα