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

 

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

Γιατί στη C#

Îåêßíçóå áðü ôï ìÝëïò axaros. Τελευταία δημοσίευση από το μέλος Νατάσα Μανουσοπούλου στις 15-12-2006, 09:01. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-12-2006, 16:35 22225

    Γιατί στη C#

    δεν έχω Exit Try
    όπως στην κατά τους
    θερμόαιμους αντι-οπαδούς της "ακατανόμαστης" VB;
    Θεωρητικά ρωτάω γιατί .... Δεν ανοίγω language war ...

    Γιατί λοιπόν ;


    Πάνος Αβραμίδης
  •  14-12-2006, 16:54 22226 σε απάντηση της 22225

    Απ: Γιατί στη C#

    Εγώ δεν καταλαβαίνω γιατί να υπάρχει αυτό στην VB. To Try/Catch δεν είναι flow control block, οπότε τί νόημα έχει να υπάρχει αυτό το jump του Exit Try? Αν δεν θέλεις να εκτελέσεις κώδικα βάση συνθήκης, έχεις το IF. Αν, για κάποιο λόγο θέλεις ντε και καλά να κάνεις jump, υπάρχει πάντα η goto.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  14-12-2006, 17:02 22227 σε απάντηση της 22225

    Απ: Γιατί στη C#

    Χωρίς να μπω σε κάποιο finally block;


    Πάνος Αβραμίδης
  •  14-12-2006, 17:24 22231 σε απάντηση της 22225

    Απ: Γιατί στη C#

    Όπως σου είπα, δεν καταλαβαίνω ποιός ο σκοπός της Exit Try. Άν δεν θέλω να εκτελέσω ένα κομμάτι κώδικα βάση συνθήκης, θα το βάλω σε if. Αλλιώς δεν θα το γράψω καν. Επίσης δεν θα χρησιμοποιούσα goto γενικά.

    Τί θέλεις να κάνεις που χρειάζεται την Exit Try? Μου φαίνεται ότι έτσι ο κώδικας απλά γίνεται πιο δυσνόητος και δυσκολότερος στη συντήρηση. Πέρα από το ότι κάνεις ουσιαστικά ένα jump, αναγκάζεις το Try/Catch να συμπεριφερθεί και σαν control flow statement. Κατά κανόνα, το error handling δεν επηρεάζει την κανονική λειτουργία του κώδικα. H Exit Try κάνει ακριβώς το αντίθετο.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  14-12-2006, 17:39 22233 σε απάντηση της 22225

    Απ: Γιατί στη C#

    Έχω ένα κεντρικό validation object οπότε αν¨"σκάσει" κάποιο
    από τα πολλά conditions που θέλω να ελέγξω απλά δεν θέλω να
    συνεχίσω παρακάτω (και να κάνω και cleanup φεύγοντας)...

    Γενικότερα τι θεωρείς optimal ανεξαιρέτως γλώσσας όσον αφορά στο exception handling ;


    Πάνος Αβραμίδης
  •  14-12-2006, 19:32 22238 σε απάντηση της 22225

    Απ: Γιατί στη C#

    Πάνο (axaros) ... ίσως δεν είναι καλη ιδέα να χρησιμοποιήσεις exceptions sta validation rules σου, κυρίως γιατί είναι πολύ αργό.

    Ίσως ένα IValidator interface που έχει κάποιο boolean IsValid property να σε βολέψει και περισσότερο, και να είναι και πολύ πιο γρήγορο ...
    Angel
    O:]
  •  14-12-2006, 19:50 22239 σε απάντηση της 22225

    Απ: Γιατί στη C#

    Πάνο,
    σε αυτή την περίπτωση δε θα ήταν καλύτερο απλά να κάνεις return; Ή να βγάλεις το σχετικό κώδικα σε μια μέθοδο ώστε να μπορείς να κάνεις return; Ελπίζω βέβαια να μην ακολουθείς την αρχή του single exit point...

    Όσον αφορά το σχόλιο του anjelinio, συμφωνώ απόλυτα ότι το throw δεν είναι αποδοτική λύση για Validation. Μπορείς όμως να έχεις το Exception σαν out παράμετρο από τη validation function, όπου μπορείς να έχεις και πολλά σφάλματα μαζεμένα, συνδεδεμένα σε λίστα μέσω του InnerException ή σε ένα container. Έτσι έχεις και τη γρήγορη απόδοση, και πλούσια πληροφορία για το σφάλμα. Το μόνο σημαντικό που λείπει είναι το StackTrace.

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