Przeczytałem oficjalną definicję "podbicia", ale wciąż nie do końca rozumiem, co robi.Jak używać słowa kluczowego "podniesienie" w Pythonie
W najprostszy sposób, czym jest "podbicie"?
Przykładowe użycie może pomóc.
Przeczytałem oficjalną definicję "podbicia", ale wciąż nie do końca rozumiem, co robi.Jak używać słowa kluczowego "podniesienie" w Pythonie
W najprostszy sposób, czym jest "podbicie"?
Przykładowe użycie może pomóc.
Ma 2 cele.
yentup has given the first one.
Jest używany do podnoszenia własnych błędów.
if something: raise Exception('My error!')
Drugi jest przebić się bieżący wyjątek obsługę wyjątków, tak, że może być poddawany dalszej obróbce na stos połączenia.
try:
generate_exception()
except SomeException as e:
if not can_handle(e):
raise
handle_exception(e)
Wprowadziłem to i otrzymałem "globalną nazwę" błąd "nie jest zdefiniowany". Dla innych nowych w Pythonie, potrzebujesz "raise Exception (" My error! ")". Zamieniasz "błąd" na swoją nazwę wyjątku. Lista standardowych wyjątków, których możesz użyć, znajduje się tutaj: http://docs.python.org/2/library/exceptions.html –
Zauważ, że w Pythonie 3.x nowa składnia to 'except SomeException as e:' – user1735003
@ user1735003 , co robi 'jak e'? Czym różni się od 'exceptException'? –
raise
powoduje wyjątek być podniesiony. Niektóre inne języki używają zamiast tego słowa "rzut".
Jest przeznaczony do sygnalizowania sytuacji błędu; zaznacza, że sytuacja jest wyjątkowa w stosunku do normalnego przepływu.
Wyniesione wyjątki mogą zostać ponownie przechwycone przez kod "w górę" (otaczający blok lub funkcja wcześniej na stosie), aby obsłużyć go, używając kombinacji try
, except
.
Można go używać do podnoszenia błędy w ramach sprawdzania błędów:
if (a < b):
raise ValueError()
Albo obsługiwać kilka błędów, a następnie przekazać je w ramach obsługi błędów:
try:
f = open('file.txt', 'r')
except IOError:
# do some processing here
# and then pass the error on
raise
raise
bez żadnych argumentów jest specjalnym zastosowaniem składni pythona. Oznacza to uzyskać wyjątek i ponownie go podnieść. Jeśli to użycie mogło zostać nazwane reraise
.
raise
Od The Python Language Reference:
przypadku braku wyrażenia są obecne, podnieść ponownie podnosi ostatniego wyjątku że był aktywny w bieżącym zakresie.
Jeśli raise
jest stosowany samodzielnie bez jakiegokolwiek argumentu jest ściśle stosować do przebicie -ing.Jeśli odbywa się w sytuacji, która nie jest na przebicie innego wyjątku, jest następujący błąd pokazany: RuntimeError: No active exception to reraise
Poza raise Exception("message")
i raise
Python 3 wprowadzono nową formę, raise Exception("message") from e
. Nazywa się to łańcuchem wyjątków, pozwala zachować oryginalny wyjątek (przyczynę źródłową) z jego śledzeniem.
Jest bardzo podobny do wewnętrznych wyjątków od C#.
Więcej informacji: https://www.python.org/dev/peps/pep-3134/
Jest znany jako 'throw' w niektórych innych językach. – voithos