Python中的异常处理是程序中处理错误和异常情况的一种机制。它允许程序在遇到错误时不会立即崩溃,而是能够捕获错误并适当地响应。捕获程序可能产生的异常 防止程序 由于异常导致的出错异常。异常处理是编写健壮Python程序的关键部分,它允许你优雅地处理错误情况,而不是让程序崩溃。
try:执行有可能出错的代码 except:捕获到具体异常,针对处理 else:如果没有异常就执行 finaal:有没有异常都会执行
1. 异常类
Python中的内置异常类都继承自BaseException
类。最常见的异常是Exception
类及其子类,用于表示程序运行中的错误。
2. 异常处理
使用try
和except
块来捕获并处理异常。
try:
# 尝试执行的代码
result = 10 / 0
except ZeroDivisionError as e:
# 如果发生了ZeroDivisionError,执行这里的代码
print("除以零错误:", e)
3. 多个except
块
可以有多个except
块来捕获不同类型的异常。
try:
# 可能引发多种异常的代码
except TypeError as e:
print("类型错误:", e)
except ValueError as e:
print("值错误:", e)
except Exception as e:
print("其他错误:", e)
4. else
子句
else
块在try
块没有异常发生时执行。
try:
# 可能引发异常的代码
except SomeException as e:
print("异常发生:", e)
else:
# 没有异常发生时执行的代码
print("一切正常!")
5.finally
子句
finally
块无论是否发生异常都会执行,常用于执行清理工作。
try:
# 可能引发异常的代码
except SomeException as e:
print("异常发生:", e)
finally:
# 无论是否发生异常都会执行的代码
print("清理资源")
6. 异常传递
在except
块中使用raise
关键字可以重新抛出当前捕获的异常。
class MyError(Exception):
pass
try:
raise MyError("发生了一个自定义错误")
except MyError as e:
print("自定义错误:", e)
7.输入数字判断是否为异常
input_str = input('输入数字')
try:
input_num = int(input_str)
print(f"{input_num}")
except TypeError as e:
print("有类型异常出现重新输入")
# except ValueError as e :
# print("有数字异常出现重新输入", e)
# except ZeroDivisionError as e :
# print("有数字零异常出现重新输入", e)
# except Exception as e :
# print("有异常出现重新输入", e)
else:
print("没有异常出现")
finally:
print("程序已结束")
8.判断文件存在与否
try:
with open(f"123.txt", "r") as f:
print(f.read())
except FileNotFoundError as e:
print("文件并未找到", e)
except Exception as e:
print("未知错误", e)
9. 用户定义的异常
可以定义自己的异常类来表示特定的错误情况。
while True:
input_str = input("输入一个正整数")
try:
input_num = int(input_str)
try:
if input_num < 1:
# raise抛出当前异常 使except捕获到异常
# 当你使用 raise 关键字时,你可以抛出一个异常,
# 这可以是内置的异常类型或者是用户定义的异常类型(通过继承 Exception 类或其子类创建)。
raise LTOne("小于1")
except LTOne as e:
print(f"输入的数字小于1,请重新输入")
else:
print("奇数" if input_num % 2 else "偶数")
except ValueError as e:
print(f"输入的数字不能转为数字请重新输入")