Krótka odpowiedź jest taka, że zarówno raise MyException
i raise MyException()
zrobić to samo. Ta pierwsza forma automatycznie tworzy twój wyjątek.
relevant section from the docs mówi "podbicie ocenia pierwsze wyrażenie jako obiekt wyjątku. To musi być podklasą lub instancją BaseException. Jeśli jest to klasa, wystąpienie wyjątku zostaną uzyskane w razie potrzeby przez utworzenie wystąpienia klasa bez argumentów. "
Mimo że semantyka jest taka sama, pierwsza forma jest mikroskopowo szybsza, a druga forma jest bardziej elastyczna (ponieważ w razie potrzeby można przekazać jej argumenty).
Typowym stylem używanym przez większość ludzi w Pythonie (tj. W standardowej bibliotece, w popularnych aplikacjach iw wielu książkach) jest użycie raise MyException
, gdy nie ma żadnych argumentów. Ludzie tworzą instancję wyjątku tylko wtedy, gdy trzeba przekazać pewne argumenty. Na przykład: raise KeyError(badkey)
.
możesz potrzebować przekazać kilka argumentów w '()' jak 'raise NameError ('HiThere')' przeczytaj [8.4. Podnoszenie wyjątków] (http://docs.python.org/2/tutorial/errors.html#raising-exceptions) –
@GrijeshChauhan: Myślę, że pytanie dotyczy 'raise NameError' vs' raise NameError() '. – Blender
@Blender Tak po prostu zrozumiałem pytanie, jestem również nowy uczeń :) –