首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

  • 24-12-06 00:05
  • 2589
  • 5452
juejin.cn

错误与异常处理

错误 (Errors) :是程序中的语法或逻辑问题,例如拼写错误或缺少必要的代码结构。Python 编译阶段会直接报错,无法执行程序。

python
代码解读
复制代码
if True  # 语法错误:缺少冒号    print("Error")

异常 (Exceptions) :是运行时发生的错误,程序在运行时检测到的非预期行为。如果未处理异常,程序会崩溃。

perl
代码解读
复制代码
print(1 / 0)  # ZeroDivisionError print(int("abc"))  # ValueError

常见的 Python 内置异常包括:

  • SyntaxError:语法错误。
  • ZeroDivisionError:除数为零。
  • ValueError:传入无效参数。
  • TypeError:类型不匹配。
  • IndexError:索引超出范围。
  • KeyError:字典中找不到指定键。
  • AttributeError:对象没有某个属性。
  • NameError:引用未定义的变量。
  • FileNotFoundError:文件未找到。
  • ImportError:导入模块失败。

异常捕获与处理

try-except 结构

python
代码解读
复制代码
try:    # 可能会引发异常的代码 except ExceptionType:    # 处理异常的代码 ​ try:    result = 10 / 0 except ZeroDivisionError:    print("除数不能为零!")

捕获多个异常:使用多个 except 分支或者捕获多个异常为一类。

捕获所有异常:不推荐,但在特殊情况下可能使用。

python
代码解读
复制代码
try:    value = int("abc") except ValueError:    print("值错误!") except TypeError:    print("类型错误!")     try:    result = 10 / 0 except (ZeroDivisionError, ValueError) as e:    print(f"异常发生:{e}")     try:    result = 10 / 0 except Exception as e:    print(f"捕获到异常:{e}")

else 和 finally 子句

else:当 try 块没有发生异常时执行。

python
代码解读
复制代码
try:    result = 10 / 2 except ZeroDivisionError:    print("除数不能为零!") else:    print(f"结果是:{result}")

finally:无论是否发生异常,都会执行的代码块,常用于清理资源。

python
代码解读
复制代码
try:    f = open("file.txt", "r") except FileNotFoundError:    print("文件未找到!") finally:    print("清理操作完成。")

自定义异常

1.定义自定义异常类:需要继承自Exception类:

ruby
代码解读
复制代码
class MyError(Exception):    def __init__(self, message):        self.message = message

2.抛出异常:使用 raise手动引发异常

  • 可以指定异常类型和消息raise ValueError("非法值!")
  • 在捕获异常中重新引发
python
代码解读
复制代码
try:    raise ValueError("测试异常") except ValueError:    print("捕获异常后重新引发")    raise
python
代码解读
复制代码
def check_value(value):    if value < 0:        raise MyError("值不能为负数!") try:    check_value(-1) except MyError as e:    print(f"捕获自定义异常:{e.message}")

常见的异常处理实践

文件操作中的异常处理

python
代码解读
复制代码
try:    with open("example.txt", "r") as file:        content = file.read() except FileNotFoundError:    print("文件未找到!")
注:本文转载自juejin.cn的zzbird的文章"https://juejin.cn/post/7444562650917437440"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

143
阅读
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top