Δημοσιεύτηκε: 03 Φεβ 2012, 21:04
από migf1
Ilias95 έγραψε:Δεν καταλαβαίνω την απορία. Θεωρώ ότι είναι τόσο εγγυημένο, όσο το ότι η print('hello world') θα εκτυπώσει 'hello world' στην οθόνη.

Δεν ξέρω, για αυτό ρώτησα αν είναι εγγυημένο. Στη C η printf("Hello world"); δεν είναι εγγυημένο πως θα πετύχει πάντως. Αν αποτύχει επιστρέφει αρνητική τιμή, αλλιώς επιστρέφει το πλήθος των χαρακτήρων που τύπωσε.

έγραψε:
Αφού είναι λειτουργία της γλώσσας. Από κει και πέρα αν κάτι πάει λάθος είναι bug της ίδιας της γλώσσας (της οποιασδήποτε γλώσσας).
Δεν το θεωρώ λογικό να ελέγχεις το κάθε τι που κάνεις. Νομίζω ότι αυτά θεωρούνται δεδομένα.

Έτσι τα βλέπω εγώ τουλάχιστον. Αν κάνω λάθος, διόρθωσε με.

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

έγραψε:
Edit:
Πάντως γενικώς στην python είναι εύκολο να βεβαιωθείς για κάτι πριν περάσεις σε κάτι άλλο.
Πχ. στην αρχή μίας συνάρτηση που καλείς με το όρισμα number μπορείς να βεβαιωθείς ότι ο number θα είναι θετικός με:
Κώδικας: Επιλογή όλων
assert number > 0, 'number must be positive'

Αν η βεβαίωση αποτύχει τότε θα υψωθεί assertion error και το πρόγραμμα θα σταματήσει επιτόπου, εκτυπώνοντας το μήνυμα που περνάς μαζί με το Error και που αυτό συνέβη.
Μπορείς να δημιουργήσεις δικές σου εξαιρέσεις επίσης αν δεν θες να χρησιμοποιήσεις την assert.

Αυτό είναι άλλο. Από τη C το έχει πάρει η Python, ακριβώς έτσι λειτουργεί και στη C... αλλά δεν είναι αυτό που ρώτησα αρχικά. Το assert όπως είπες κι εσύ τερματίζει άμεσα την εφαρμογή, η δική μου απορία αφορούσε έλεγχο αποτυχίας μιας συγκεκριμένης λειτουργίας για δυνατότητα recovery. Υποθέτω όμως πως μπορείς να το κάνεις μέσω exceptions, τα οποία (αντίθετα με τη C) η Python νομίζω τα υποστηρίζει εγγενώς ;)