raise
Zgłasza wyjątek, sygnalizując błąd lub niedozwoloną sytuację.
Przykład
#Python
def set_level(level):
if not isinstance(level, int):
raise TypeError("Poziom musi być liczbą całkowitą")
if level < 1:
raise ValueError(f"Poziom musi być dodatni, podano {level}")
return level
for value in [5, 0, "3"]:
try:
print("Ustawiono poziom", set_level(value))
except (TypeError, ValueError) as error:
print("Błąd:", error)Wynikzapisany wynik, możesz go sprawdzić
Ustawiono poziom 5
Błąd: Poziom musi być dodatni, podano 0
Błąd: Poziom musi być liczbą całkowitą
Definicja i zastosowanie
#Instrukcja raise zgłasza wyjątek i przerywa bieżące działanie. Kontrola przechodzi do najbliższego bloku except, który obsługuje ten typ wyjątku. Jeśli takiego nie ma, program kończy się komunikatem błędu.
Zgłaszaj wyjątki, gdy funkcja dostanie dane, z którymi nie może sensownie pracować, na przykład ujemną liczbę punktów. Wbudowane typy, jak ValueError czy TypeError, pasują do większości sytuacji.
Własne wyjątki tworzysz, dziedzicząc po Exception. Zapis raise NowyBłąd(...) from error zachowuje informację o pierwotnej przyczynie, co ułatwia szukanie błędów.
Składnia
#Składnia
raise TypWyjatku("komunikat")Więcej przykładów
#Python
class OutOfFuelError(Exception):
pass
def start_lesson(fuel):
if fuel <= 0:
raise OutOfFuelError("Brak paliwa na kolejną lekcję")
return fuel - 1
try:
start_lesson(0)
except OutOfFuelError as error:
print(type(error).__name__, "-", error)Wynikzapisany wynik, możesz go sprawdzić
OutOfFuelError - Brak paliwa na kolejną lekcję
Dobre praktyki
#- Komunikat wyjątku powinien mówić, co poszło nie tak i jaka wartość to spowodowała.
- Własne wyjątki nazywaj z końcówką
Error, np.InvalidAnswerError.
Powiązane hasła
#- try, except, else, finallyObsługa wyjątków: przechwytywanie błędów bez przerywania programu.
- assertSprawdza założenie w kodzie i zgłasza AssertionError, gdy nie jest spełnione.
- classDefiniuje klasę: szablon obiektów łączący dane i funkcje, które na nich działają.
- isinstance()Sprawdza, czy obiekt jest danego typu lub jego podtypu.
Widzisz błąd albo brakuje przykładu? Napisz do nas.