Χειρισμός σφαλμάτων από ένα πρόγραμμα του οποίου έγινε εκκίνηση

Εάν έχετε ορίσει το δικό σας είδος ρυθμίσεων εκκίνησης, είναι πιθανόν να επιθυμείτε να χειρίζεστε τα σφάλματα ή άλλες πληροφορίες κατάστασης που προκύπτουν κατά την εκτέλεση του προγράμματος. Για παράδειγμα, μπορεί να επιθυμείτε να ερωτάτε ή να ειδοποιείτε το χρήστη όταν συμβαίνουν συγκεκριμένα είδη σφαλμάτων κατά τη διάρκεια μιας εκκίνησης ή να παρέχετε ενημερωτικά μηνύματα για συγκεκριμένες αλλαγές κατάστασης στο πρόγραμμα. Αφού αποτελεί καλή πρακτική ο διαχωρισμός του χειρισμού του περιβάλλοντος χρήστη από την κύρια λειτουργία, δεν θα θέλατε να διαθέτετε άμεσες παραπομπές από τον εκπρόσωπο εκκίνησής σας στις κλάσεις χειρισμού καταστάσεων.

Η αντιμετώπιση αυτού του προβλήματος γίνεται από το σημείο επέκτασης org.eclipse.debug.core.statusHandlers. Σας επιτρέπει να συσχετίσετε μια ρουτίνα χειρισμού κατάστασης με ένα συγκεκριμένο κωδικό κατάστασης. Χρησιμοποιώντας αυτό το σημείο επέκτασης, μπορείτε να ορίσετε όλους τους πιθανούς κωδικούς κατάστασης και σφαλμάτων στον εκπρόσωπο εκκίνησής σας και τις κύριες κλάσεις, ενώ καταχωρείτε μοναδικές ρουτίνες χειρισμού για τους διαφορετικούς κωδικούς κατάστασης από μια άλλη πρόσθετη λειτουργία.

Το σημείο επέκτασης δεν καθορίζει καμία συσχέτιση ανάμεσα σε μια ρουτίνα χειρισμού κατάστασης και τις ρυθμίσεις εκκίνησης. Εξαρτάται από την υλοποίηση του εκπροσώπου εκκίνησης να εντοπίσει τα σφάλματα, να εντοπίσει την κατάλληλη ρουτίνα χειρισμού κατάστασης και να την καλέσει. Η επέκταση απλά παρέχει ένα μητρώο ώστε οι ρουτίνες χειρισμού κατάστασης να μπορούν να βρεθούν για συγκεκριμένους κωδικούς κατάστασης. Η DebugPlugin παρέχει μια βοηθητική μέθοδο για τη λήψη μιας συγκεκριμένης ρουτίνα χειρισμού κατάστασης.

IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(status);

Οι ρουτίνες χειρισμού κατάστασης θα πρέπει να υλοποιούν τη IStatusHandler. Η κλάση χειρισμού κατάστασης προσδιορίζεται στον ορισμό επέκτασης, μαζί με το συσχετισμένο κωδικό κατάστασής της και την πρόσθετη λειτουργία η οποία αναμένεται να δημιουργήσει του κωδικούς κατάστασης.

Ο κώδικας που ακολουθεί δείχνει τον τρόπο με τον οποίο τα εργαλεία Java δηλώνουν τις ρουτίνες χειρισμού κατάστασης:

<extension point = "org.eclipse.debug.core.statusHandlers">
	<statusHandler
		id="org.eclipse.jdt.debug.ui.statusHandler.vmConnectTimeout"
		class="org.eclipse.jdt.internal.debug.ui.launcher.VMConnectTimeoutStatusHandler"
		plugin ="org.eclipse.jdt.launching"
		code="117">
	</statusHandler>	
	...
   </extension>