2009-10-07 14 views
35

Środowisko wykonawcze powtarza mi:Jak napisać pusty blok wcięć w Pythonie?

oczekiwać wcięty Blokuj

Ale nie chcę pisać nic w moim wyjątkiem bloku, po prostu chcę go złapać i połknąć wyjątek.

+0

W jaki sposób postępujesz zgodnie z tutorialem Python? Gdzie próbujesz nauczyć się Python? –

+0

Nie wykonałem żadnego samouczka. Wszystko, co wiem, otrzymałem z dokumentacji AppEngine –

Odpowiedz

84

Wystarczy napisać

pass 

jak w

try: 
    # Do something illegal. 
    ... 
except: 
    # Pretend nothing happened. 
    pass 

EDIT:. @swillden wychowuje dobry punkt, a mianowicie, że jest to straszny pomysł w ogóle. Powinieneś przynajmniej powiedzieć, że musisz powiedzieć:

except TypeError, DivideByZeroError: 
W przeciwnym razie możesz zamaskować większe problemy.

+8

Uważaj przy użyciu tego idiomu, jak wyrażono powyżej. Typowy "wyjątek" będzie wychwytywał każdy wyjątek, w tym wiele błędów programistycznych, takich jak odwoływanie się do niezdefiniowanych zmiennych itp., A pusta klauzula połknie wyjątki. W ten sposób możesz ukryć poważne problemy. – divegeek

+0

Lepszym przykładem może być idiom "while condition-with-effects-effects: pass". Powiedział, że warunki z efektami ubocznymi również mogą mieć nieprzyjemny zapach. – Steve314

+0

Wyjątki są bardzo drogie. Używaj ich mądrze. – Austin

0

Nigdy nie robiłem tego w trwalszej kodu, ale często to zrobić jako zastępczy

if some_expression: 
    True 
else: 
    do_something(blah) 

Tylko wystający True tam zatrzyma błąd. Nie jestem pewien, czy jest w tym coś złego.

+8

Nie ma w tym nic złego pod względem technicznym, ale te sytuacje powodują, że w pierwszej kolejności "przekaz" istnieje. – efotinis

+2

to jest złe tylko dlatego, że wyrzuca czytelników, to absolutnie nie jest idiomatyczne. – u0b34a0f6ae

+1

Ja wolę Turea na Przełęcz - ponieważ prawda was wyswobodzi;) –

Powiązane problemy