Python引发异常
在Python中,raise语句用于引发异常。try-except块可用于管理异常,即在程序运行时发生的错误。当触发异常时,程序将转到最近的异常处理程序,中断常规执行流程。
- raise关键字通常用于函数或方法内部,用于指示错误条件。
- 我们可以使用raise关键字抛出异常并立即停止程序运行。
- 当触发异常时,Python会寻找最近的异常处理程序,通常使用try-except块定义。
- 如果找不到异常处理程序,软件会崩溃,并显示错误消息。
下面是如何引发异常的示例:
示例1:
代码
# Python program to raise an exception
# divide function
def divide(a, b):
if b == 0:
raise Exception(" Cannot divide by zero. ")
return a / b
try:
result = divide(10, 0)
except Exception as e:
print(" An error occurred: ", e)
输出:
An error occurred: Cannot divide by zero.
在这个示例中,除法函数接受输入的参数a和b,如果b等于零,就会引发一个异常。try块捕获这个异常,而unless块则打印错误消息。
示例2:
代码
# Python program to raise an exception
# check_age function checks the age
def check_age(age):
if age < 18:
raise Exception(" Age must be 18 or above. ")
else:
print(" Age is valid. ")
try:
check_age(17)
except Exception as e:
print(" An error occurred: ", e)
输出:
An error occurred: Age must be 18 or above.
这个示例中的check age方法接受输入的年龄,如果年龄小于18岁,则会抛出一个异常。try块捕获这个异常,而unless块则打印错误消息。这说明了你可以在Python中引发和处理异常。
你可以引发任何类型的异常,例如ValueError、TypeError、KeyError等,以指示代码中的特定错误。
代码
# Python program for Handling raising exceptions
try:
# code that might raise an exception
value = int("a")
except ValueError:
# code that handles the ValueError exception
print(" Invalid value ")
except TypeError:
# code that handles the TypeError exception
print(" Invalid type ")
输出:
Invalid Value
在这个示例中,我们尝试将字符串 “a” 转换为整数,结果会引发一个 ValueError 异常。第一个 unless 代码块识别到了这个异常,并生成一个说明值不正确的消息。如果出现不同类型的异常,它将由下一个 except 代码块处理。
finally 代码块也可以用来运行必须运行的代码,无论是否触发了这个异常。例如:
代码
try:
# code that might raise an exception
result = 10 / 0
except ZeroDivisionError:
# code that handles the exception
print(" Cannot divide by zero. ")
finally:
# code that must be executed regardless of whether an exception was raised or not
print(" The finally block is always executed. ")
输出:
Cannot divide by zero.
The finally block is always executed.