Python引发异常

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.

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程