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

 

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

mscorlib.dll exceptions

Îåêßíçóå áðü ôï ìÝëïò KelMan. Τελευταία δημοσίευση από το μέλος Πέτρος Αμοιρίδης στις 06-09-2007, 13:06. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-08-2006, 13:31 15515

    mscorlib.dll exceptions

    Παρατηρώ ότι σε ένα WM 5 device project όταν το τρέχω (το κάνω delpoy στον emulator), στο Immediate window, παρουσιάζονται πολλά "first chance exception", τύπου ΙΟ.FileNotFoundException, UnauthorizedAccessException και UriFormatException (μάλλον από το web service που κάνω access). Όλα αυτά από το mscorlib.dll Huh? Η εφαρμογή τρέχει κανονικά, αλλά μου κάνει εντύπωση... Έχει κανείς καμιά ιδέα;


    Vir prudens non contra ventum mingit
  •  05-08-2006, 19:00 15527 σε απάντηση της 15515

    Απ: mscorlib.dll exceptions

    Κι εγώ το έχω συναντήσει.. Κάπου είχα βρει ενα αρθράκι το οποιό έλεγε οτι φταίει το emulation..Θα δω μήπως μπορέσω και το ξεθάψω..
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  05-08-2006, 19:33 15532 σε απάντηση της 15527

    Απ: mscorlib.dll exceptions

    Πολλά από αυτά τα exceptions μπορεί να οφείλονται στον τρόπο με τον οποίο δουλεύει το runtime, τον τρόπο με τον οποίο εντοπίζει τα assemblies ή τον τρόπο με τον οποίο κάνει parse τα URL. Χρησιμοποιώ το Composite UI Application Block τον τελευταίο καιρό και έχω συναντήσει πολλές περιπτώσεις στις οποίες αντί ένα function να επιστρέψει false, ρίχνει ένα exception.

    Π.χ. το runtime χρησιμοποιεί XML Serializers για τις serializable κλάσεις. Όταν εκτελείται μία εφαρμογή, το runtime ψάχνει να βρει τους serializers στο path της εφαρμογής. Αν δεν τις βρει, τις δημιουργεί επιτόπου. Το περίεργο είναι ότι αυτό γίνεται σηκώνοντας ένα exception! Είχα χάσει σχεδόν 1 μέρα όταν το συνάντησα αυτό πρώτη φορά, προσπαθώντας να καταλάβω γιατί έτρωγα exception με το ξεκίνημα της εφαρμογής! Μετά διαπίστωσα ότι η εφαρμογή δούλευε χωρίς κανένα πρόβλημα. Άλλη παρόμοια περίπτωση, είναι ο κώδικας με τον οποίο το CAB εντοπίζει τα assemblies που χρειάζεται. Αν δεν βρεθεί το assembly σε ένα path σηκώνεται ένα exception και μετά γίνεται η αναζήτηση σε άλλο path.

    Ο λόγος που χρησιμοποιούνται αυτές οι τεχνικές είναι ότι με τον τρόπο αυτό απλουστεύεται κατά πολύ ο κώδικας. Για παράδειγμα, αν ο αλγόριθμος αναζήτησης ενός assembly απαιτεί την κλήση πολλών μεθόδων σε μεγάλο βάθος, θα είναι ευκολότερο να σηκώσει κανείς ένα exception το οποίο θα χειριστεί στο ανώτερο επίπεδο του αλγόριθμου, παρά να επιστρέψει μια τιμή false από κάθε μέθοδο. Το ίδιο ισχύει και στην περίπτωση αναδρομικών συναρτήσεων. Όταν μία αναδρομική συνάρτηση έχει κληθεί 5-6 φορές και αποτυγχάνει στο 7ο επίπεδο, ίσως να είναι ευκολότερο να σηκώσει ένα exception παρά να επιστρέψει μια τιμή false σε 7 επίπεδα. Καθώς μάλιστα οι αναδρομικές συναρτήσεις χρησιμοποιούνται συχνά για parsing, υποψιάζομαι ότι από εκεί προέρχονται τα URL exceptions.

    Σε τέτοιες περιπτώσεις μάλιστα, ένα exception θα έχει το ίδιο ή μικρότερο υπολογιστικό κόστος με την επιστροφή μίας τιμής false. Το κόστος ενός exception οφείλεται σε μεγάλο βαθμό στο call stack unwinding, στην επιστροφή ουσιαστικά από όλες τις κλήσεις μεθόδων που παρεμβάλλονται μεταξύ του σημείου που εμφανίζεται το exception και του exception handler. Κάτι παρόμοιο όμως θα πρέπει να γίνει και αν προσπαθήσουμε να επιστρέψουμε κάποια τιμή από αλλεπάλληλες κλήσεις μιας αναδρομικής συνάρτησης.

    Η τεχνική αυτή είναι πολύ χρήσιμη αλλά θέλει προσοχή, καθώς τα exceptions κοστίζουν. Εξάλλου, η χρήση της μπορεί εύκολα να μπερδέψει όποιον προσπαθεί να διαβάσει τον κώδικα. Από την άλλη, είναι εξαιρετικά χρήσιμη όταν μπορεί να απλοποιήσει τον κώδικα, όταν η πιθανότητα να σηκωθούν τα exceptions είναι μικρή και όταν το κόστος του αλγόριθμου που υλοποιεί είναι μικρότερο από το κόστος του ίδιου του exception.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-09-2007, 13:06 34783 σε απάντηση της 15532

    Απ: mscorlib.dll exceptions

    Χθες έψαχνα για αυτά τα θέματα και βρήκα κάποια posts από άνθρωπο της ομάδας ανάπτυξης του NETCF. Αυτό που ισχύει είναι πως το ίδιο το runtime πετάει αυτά τα exceptions αλλά τα κάνει και handle, οπότε οι εφαρμογές μας δεν επηρεάζονται παρά μόνο ίσως από ένα πολύ μικρό κόστος που πληρώνουν σε υπολογιστική ισχύ. Από τα λεγόμενα πάντως του developer κατάλαβα ότι προσπαθούν να τα μειώσουν όσο το δυνατόν σε επόμενες εκδόσεις του NETCF, οπότε συμπεραίνω πως δε θέλουν να υπάρχουν.

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