Πίνακας Περιεχομένων
Αναφορά σφαλμάτων
Γενικά
Κατά την εκτέλεση του Perfect Score, είναι πιθανό να παρουσιαστούν κάποια σφάλματα για τα οποία δεν έχει γίνει η αντίστοιχη πρόληψη. Για παράδειγμα, μπορεί το πρόγραμμα να ζητήσει από το χρήστη τον αριθμό μίας διανομής κι εκείνος να πληκτρολογήσει γράμμα αντί για αριθμό. Εφόσον δεν έχει γίνει κατάλληλος έλεγχος πριν από τη χρήση της τιμή που έδωσε ο χρήστης, η εφαρμογή θα παρουσιάσει ένα παράθυρο διαλόγου όπως το ακόλουθο:
Η γενική ρουτίνα πρόληψης σφαλμάτος απέτρεψε τον τερματισμό της εφαρμογής και ζητά από το χρήστη να αποφασίσει αν θα στείλει το αρχείο που δημιουργήθηκε (και περιέχει όλες τις σχετικές πληροφορίες) στην ΕΟΜ προς εξέταση.
Αν και ο χρήστης μπορεί να απαντήσει αρνητικά, συνιστάται ιδιαίτερα να αποστέλλονται πάντα τέτοιου είδους αρχεία, καθότι βοηθούν στη διόρθωση της εν λόγω ρουτίνας και στην αποτροπή εμφάνισης του σφάλματος σε μελλοντικές εκδόσεις.
Όποια κι αν είναι η απάντηση του χρήστη, η εφαρμογή παρουσιάζει στη συνέχεια ένα νέο παράθυρο διαλόγου:
Εφόσον ο χρήστης απαντήσει θετικά στην ερώτηση “Θέλετε να δοκιμάσετε να συνεχίσετε τη λειτουργία του προγράμματος”, θα γίνει προσπάθεια να παρακαμφθεί το σφάλμα και να συνεχιστεί η λειτουργία του προγράμματος. Στην αντίθετη περίπτωση η εφαρμογή θα τερματιστεί (και σε όποια αρχεία δεν έχει γίνει αποθήκευση, θα χαθούν οι πιο πρόσφατες αλλαγές).
Πληροφορίες που αποστέλλονται
Το αρχείο καταγραφής σφαλμάτων περιέχει:
- Τα στοιχεία του ενεργού χρήστη (όνομα, email, σωματείο)
- Την ημερομηνία του συστήματος
- Την έκδοση του προγράμματος
- Την κατάσταση της μνήμης (stack trace) κατά τη στιγμή που συνέβη το σφάλμα
Ακολουθεί παράδειγμα αρχείου καταγραφής σφαλμάτων:
Date: Δευτέρα, 11 Φεβρουαρίου 2008 Source: Microsoft.VisualBasic Version: 1.47.20081.30208 User Info: [2505] ΠΟΥΡΝΑΡΑΣ Τ[pournaras at opaf.org] - ΕΟΜ Message: Conversion from string "" to type 'Integer' is not valid. InnerException: System.FormatException: Input string was not in a correct format. at Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat) at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value) StackTrace: at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value) at pournaras.PerfectScore.CopyMovement.cmbSource_Validating(Object sender, CancelEventArgs e) at System.Windows.Forms.Control.OnValidating(CancelEventArgs e) at System.Windows.Forms.ComboBox.OnValidating(CancelEventArgs e) at System.Windows.Forms.Control.PerformControlValidation(Boolean bulkValidation) at System.Windows.Forms.ContainerControl.ValidateThroughAncestor(Control ancestorControl, Boolean preventFocusChangeOnError) at System.Windows.Forms.ContainerControl.EnterValidation(Control enterControl) at System.Windows.Forms.ContainerControl.UpdateFocusedControl() at System.Windows.Forms.ContainerControl.AssignActiveControlInternal(Control value) at System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control, Boolean originator) at System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control) at System.Windows.Forms.Control.WmSetFocus(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)