当前位置: 首页 > news >正文

异常处理及程序调试(Python)

一、常见异常

1.NameError —— 尝试访问一个没有声明的变量引发的错误

2.IndexError —— 索引超出序列范围引发的错误

3.IndentationError —— 缩进错误

4.ValueError —— 传入的值错误

5.KeyError —— 请求一个不存在的字典关键字引发的错误

6.IOError —— 输入输出错误(如要读取的文件不存在)

7.ImportError —— 当import语句无法找到模块或from无法在模块中找到相应的名称时引发的错误

8.AttributeError —— 尝试访问未知的对象属性引发的错误

9.TypeError —— 类型不合适引发的错误

10.MemoryError —— 内存不足

11.ZeroDivisionError —— 除数为0引发的错误

二、捕获并处理异常

(一)try...except

1.格式

try:

        block1

except Error :

        block2

2.参数说明

①block1:表示可能出现错误的代码块

②Error:捕获的异常名称

3.举例
try:
    b=int(input())
except ValueError:
    print("请重新输入阿拉伯数字!")
# 结果:
# 一
# 请重新输入阿拉伯数字!

(二)try...except...finally(block3是无论如何都要运行的语句)

1.格式

try:

        block1

 except error :

        block2

finally:

        block3

2.举例
try:
    b=int(input())
except ValueError:
    print("请重新输入阿拉伯数字!")
finally:
    print("该程序运行结束!")
# 结果:
#一
# 请重新输入阿拉伯数字!
# 该程序运行结束!

(三) 使用raise语句抛出异常

1.格式

raise Error (reason)

2.参数说明

①Error —— 异常名称

②reason —— 自述错误原因

3.举例
def f(a, b):
    if b == 0:
        raise ValueError("除数不能为零")
    return a / b

try:
    result = f(10, 0)
except ValueError as e:
    print(f"捕获异常: {e}")
# 结果:
# 捕获异常: 除数不能为零

三、assert语句调试程序 

1.格式

assert expression reason

2.参数说明

①expression:条件表达式,如为真,则什么都不做,为假,则抛出AssertionError异常

②reason:对判断条件描述

3.举例
def check_positive(number):
    assert number > 0, "数字必须为正数"
    print(f"数字 {number} 是正数")

check_positive(-5)  
# 结果:
# AssertionError: 数字必须为正数

http://www.dtcms.com/a/117956.html

相关文章:

  • 【Linux】系统进程管理
  • 【工具变量】A股上市公司企业创新活跃度数据集(2008-2023年)
  • 【论文笔记】RL在LLM中的落地方法
  • STM32——SPI通信
  • 怎么使用vue3实现一个优雅的不定高虚拟列表
  • mysql知识总结 基础篇
  • Light RPC:一款轻量高效的Java RPC框架实践指南
  • vscode Colipot 编程助手
  • 【CF】Day26——Teza Round 1 (Codeforces Round 1015, Div. 1 + Div. 2) CD
  • UE5学习笔记 FPS游戏制作44 统一UI大小 sizeBox
  • 关于OEC/OEC-turbo刷机问题的一些解决方法(2)——可能是终极解决方法了
  • day24学习Pandas库
  • k8s核心资源对象一(入门到精通)
  • 3D激光轮廓仪知识整理(待补充)
  • browser-use开源程序使 AI 代理可以访问网站,自动完成特定的指定任务,告诉您的计算机该做什么,它就会完成它。
  • 大模型论文:Improving Language Understanding by Generative Pre-Training
  • windterm终端软件使用
  • React-Markdown 组件底层实现原理详解
  • 服务异常挂掉问题:java invoked oom-killer
  • 数字三角形(dfs+动态规划)通过率未达100%
  • 第三次PID状态机
  • 评价区动态加载是怎么实现的?
  • 【AI学习】初步了解Gradio
  • Motionface MFvector照片一键转矢量工具使用教程
  • LeetCode算法题(Go语言实现)_34
  • 排序扩展-文件递归排序(外排序)
  • [ERROR] Some problems were encountered while processing the POMs
  • 鸿蒙开发_ARKTS快速入门_语法说明_组件声明_组件手册查看---纯血鸿蒙HarmonyOS5.0工作笔记010
  • 1631. 最小体力消耗路径
  • Quartz 数据持久化 接入MySQL数据库 数据不丢失 数据入库