Python ValueError Exception Umgang – Leitfaden
Was ist die Python ValueError?
Die Python ValueError wird ausgelöst, wenn eine Funktion ein Argument des richtigen Typs, aber mit einem unangemessenen Wert erhält. Außerdem sollte die Situation nicht durch eine präzisere Ausnahme wie IndexError beschrieben werden.
Beispiel für ValueError
Ein ValueError tritt bei mathematischen Operationen auf, wie beispielsweise der Quadratwurzel aus einer negativen Zahl.
>>> import math
>>>
>>> math.sqrt(-10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
>>>
Python ValueError Exception Handhabung
Hier ist ein einfaches Beispiel, um die ValueError Exception mit einem try-except-Block zu behandeln.
import math
x = int(input('Please enter a positive number:\n'))
try:
print(f'Square Root of {x} is {math.sqrt(x)}')
except ValueError as ve:
print(f'You entered {x}, which is not a positive number.')
Hier ist der Output des Programms mit verschiedenen Arten von Eingaben.
Please enter a positive number:
16
Square Root of 16 is 4.0
Please enter a positive number:
-10
You entered -10, which is not a positive number.
Please enter a positive number:
abc
Traceback (most recent call last):
File "/Users/pankaj/Documents/PycharmProjects/hello-world/journaldev/errors/valueerror_examples.py", line 11, in <module>
x = int(input('Please enter a positive number:\n'))
ValueError: invalid literal for int() with base 10: 'abc'
Unser Programm kann in den Funktionen int() und math.sqrt() einen ValueError auslösen. Daher können wir einen verschachtelten try-except-Block erstellen, um beide zu behandeln. Hier ist der aktualisierte Code-Schnipsel, um alle ValueError-Szenarien zu berücksichtigen.
import math
try:
x = int(input('Please enter a positive number:\n'))
try:
print(f'Square Root of {x} is {math.sqrt(x)}')
except ValueError as ve:
print(f'You entered {x}, which is not a positive number.')
except ValueError as ve:
print('You are supposed to enter positive number.')
ValueError in einer Funktion auslösen
Hier ist ein einfaches Beispiel, bei dem wir einen ValueError für einen Eingabeargument des richtigen Typs, aber mit einem unangemessenen Wert auslösen.
import math
def num_stats(x):
if x is not int:
raise TypeError('Work with Numbers Only')
if x < 0:
raise ValueError('Work with Positive Numbers Only')
print(f'{x} square is {x * x}')
print(f'{x} square root is {math.sqrt(x)}')
Python ValueError Exception Umgang – Leitfaden