Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Το σωστό Exception σώζει ζωές ...

Îåêßíçóå áðü ôï ìÝëïò anjelinio. Τελευταία δημοσίευση από το μέλος KelMan στις 13-05-2008, 22:13. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  13-05-2008, 21:19 41968

    Το σωστό Exception σώζει ζωές ...

    Είχα γράψει κάποτε, πριν καιρό, ένα mini-framework το οποίο φτιάχνει wizards σε ASP.NET.

    Αυτό ήταν βασισμένο σε xml config files, και μας δούλευε πάρα πολύ καλα, και το χρησιμοποιούμε άρδην πολύ καιρό τώρα.  Τα dlls του λοιπόν, τα έχω και τα χρησιμοποιώ μήνες τώρα, στα γραφεία του πελάτη.

    Μέχρι που σήμερα, ξαφνικά ... ένας wizard ... έσκαγε. Χωρίς προφανή λόγο και αιτία, χωρίς τίποτα, με ένα cryptic NullReferenceException σε ένα σημειο του κώδικα που ούτε εγώ που τον έγραψα δεν θυμόμουν ότι υπήρχε. Τα sources ... nowhere to be found around here, είμαι στου πελάτη. ΑΠΕΛΠΙΣΙΑ, και το χειρότερο να μην έχω καν αχνή ιδέα τι έφταιγε ...

    Τηλεφωνάκι στον Τσοσμί λοιπόν, "Μήτσο ... στείλε sources file, καίγομαι". Και φέρε τα sources πίσω απο χίλια δύο security settings του (s)proxy στον πελάτη, και άντε add new project στο solution, και replace references ολούθε, και debug κτλ. κτλ. κτλ. 2 ωρίτσες υπόθεση, και η ώρα είναι 9 το βράδυ !

    Και τελικά ... το επίμαχο κομμάτι του κώδικα:

    foreach(WizardFlowViewStep vStep in this.CurrentView.ViewSteps)
          viewSteps.Add(
    m_Steps[vStep.StepID]);



    ... το οποίο έγινε ...

    foreach(WizardFlowViewStep vStep in this.CurrentView.ViewSteps){

          WizardFlowStep wStep = (WizardFlowStep)m_Steps[vStep.StepID];

          if (null == wStep)

               throw new ArgumentOutOfRangeException(string.Format("Cannot locate Step: {0} defined in view: {1}", vStep.StepID, this.CurrentView.ViewID));

     

          viewSteps.Add(wStep);

    }


    Αν είχα βάλει εκεί απο την αρχή ένα [!!!&^%##$%#!!!] Exception με κάποιο meaningful error message, θα είχα βρεί το παναπλούστατο πρόβλημά μου σε 10 δεύτερα ... Τώρα, σε 10 ώρες !!! Και σε όλο το υπόλοιπο code base, είχα βάλει, παντού. Μόνο εκεί μου ξέφυγε, και με δάγκωσε μετά απο 2 χρόνια.

    Το συμπέρασμα της ιστορίας; Ένα καλό error message αξίζει όσο 2 ώρες debugging φίλοι μου - remember that.

    Angel
    O:]
  •  13-05-2008, 22:13 41970 σε απάντηση της 41968

    Απ: Το σωστό Exception σώζει ζωές ...

    Εμ, γι αυτό στο session του Ingo Rammer "Hardcore Production Debugging" στις δύο τελευταίες TechEd γίνεται χαμός Smile

     


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems