If it’s possible that some code may raise multiple different exceptions, we can catch the different types of exception separately.
In this example, f_to_c() raises our custom NoInputError if no input is entered, or ValueError if input is entered but can’t be converted to a number.
class NoInputError(Exception):
pass
def f_to_c(temperature_f):
# Check for zero length string
if not temperature_f:
raise NoInputError("No input")
# The cast to float will raise a ValueError
# if the string can't be converted to a float.
return (float(temperature_f) - 32) * 5/9
def main():
temperature_f = input("Enter a temperature in Fahrenheit: ")
try:
temperature_c = f_to_c(temperature_f)
print(f"{temperature_f} F is {temperature_c:.2f} C")
except NoInputError:
print("No input entered.")
except ValueError:
print("Input cannot be converted to a number.")
main()
Output if no input entered:
No input entered.
Output if text entered which cannot be converted to a number:
Input cannot be converted to a number.
Output if 97 entered:
97 F is 36.11 C
Leave a Reply