J'ai été récemment l'enseignement de moi-même Python et découvert le LBYL/l'aeap les expressions idiomatiques. En Python, il semble acceptée dans le style est l'aeap, et il semble bien fonctionner avec la langue.
Pour ceux qui ne connaissent pas, LBYL et de l'aeap reportez-vous à Regarder Avant de Sauter et Il est plus Facile de Demander Pardon Que la Permission, à la fois en ce qui concerne la vérification des erreurs avant l'exécution de code.
LBYL:
def safe_divide_1(x, y):
if y == 0:
print "Divide-by-0 attempt detected"
return None
else:
return x/y
L'aeap:
def safe_divide_2(x, y):
try:
return x/y
except ZeroDivisionError:
print "Divide-by-0 attempt detected"
return None
Ma question est: est-ce que je n'avais jamais entendu parler de l'utilisation de l'aeap que les données primaires de validation de construire, en provenance de Java et de C++ arrière-plan. Est l'aeap quelque chose qui est sage d'utiliser en Java? Ou est-il trop généraux des exceptions? Je sais qu'il y a seulement les frais généraux lorsqu'une exception est générée, donc je suis pas sûr pourquoi, la méthode la plus simple de l'aeap n'est pas utilisé. Est-ce juste une préférence?