概念:在编程中,异常是指在程序执行期间发生的错误或异常情况。当出现异常时,程序会停止正常执行,并尝试查找相应的异常处理机制。
异常处理:Python提供了一套异常处理机制,让我们能够优雅地处理和响应异常情况。异常处理可以捕获和处理异常,使程序能够继续执行或采取适当的措施。
异常类型:Python内置了许多常见的异常类型,如:
SyntaxError:语法错误,通常是由于错误的语法造成的。TypeError:类型错误,当对不适合的数据类型执行操作时引发。NameError:名称错误,尝试访问未定义的变量或函数时引发。ValueError:值错误,当一个对象具有正确的类型,但包含一个不合适的值时引发。FileNotFoundError:文件未找到错误,尝试打开不存在的文件时引发。try-except语句:try-except语句是Python中用于捕获和处理异常的关键字。通过使用try块来执行可能引发异常的代码,并在except块中处理特定类型的异常。
try:
# 可能引发异常的代码块
# ...
except ExceptionType:
# 处理特定类型的异常
# ...
当使用try-except语句时,可以编写以下示例代码来演示异常处理的过程:
try:
num1 = int(input("请输入一个整数: "))
num2 = int(input("请输入另一个整数: "))
result = num1 / num2
print("结果:", result)
except ValueError:
print("输入无效!请输入一个有效的整数。")
except ZeroDivisionError:
print("除数不能为零!请重新输入另一个非零的整数。")
except Exception as e:
print("发生了一个异常:", e)
finally:
print("异常处理完成。")
在上面的代码中,我们尝试获取用户输入的两个整数并计算它们的商。然后,我们使用try关键字将可能引发异常的代码放在一个代码块中。如果在执行num1 / num2时出现异常,程序将跳转到相应的except块,根据异常类型执行相应的代码。在这个例子中,我们使用了两个except块来处理可能的ValueError(输入无效)和ZeroDivisionError(除数为零)异常。如果出现其他未处理的异常,我们使用一个通用的except块来捕获并打印异常信息。最后,无论是否发生异常,finally块中的代码都会被执行。
finally子句:除了try-except语句,Python还提供了一个可选的finally子句,用于指定无论是否出现异常都需要执行的代码。
try:
# 可能引发异常的代码块
# ...
except ExceptionType:
# 处理特定类型的异常
# ...
finally:
# 无论是否出现异常都会执行的代码块
# ...
抛出异常:在某些情况下,我们也可以手动抛出异常,使用raise关键字来引发特定类型的异常。
raise ExceptionType("Error message")