博客
关于我
17 python基础--异常处理
阅读量:575 次
发布时间:2019-03-11

本文共 1551 字,大约阅读时间需要 5 分钟。

Python异常处理指南

1. 异常定义

异常是Python中用来表示程序运行中出现问题的机制。简单来说,就是在代码运行过程中,某些操作无法按预期完成时,会抛出异常。这些异常可以分为两种:错误和异常。

  • 错误是指在语法或逻辑上是正确的操作中,仍然出现了无法预料的问题。
  • 异常更严重,是指在语法逻辑正确的前提下,某些操作根本无法完成。

在Python中,异常是一个类,可以通过抛出(raise)和捕捉(try-except)机制来处理。

2. 常见异常类型

以下是一些常见的Python异常类型:

  • AssertionError:用于断言语句(assert)失败。
  • AttributeError:尝试访问一个对象没有的属性。
  • EOFError:试图读取文件末尾标志(EOF,通常是Ctrl+d)。
  • FloatingPointError:浮点数计算出现错误。
  • GeneratorExit:生成器的close()方法被调用时引起。
  • ImportError:导入模块失败。
  • IndexError:索引超出序列范围。
  • KeyError:尝试访问字典中的不存在的关键字。
  • KeyboardInterrupt:用户中断键盘输入(Ctrl+c)。
  • MemoryError:内存溢出(可通过删除对象释放内存)。
  • NameError:尝试访问一个不存在的变量或函数。
  • NotImplementedError:未实现的方法。
  • OSError:操作系统异常,如尝试打开不存在的文件。
  • OverflowError:数值运算超出最大限制。
  • ReferenceError:弱引用尝试访问已经被垃圾回收的对象。
  • RuntimeError:一般的运行时错误。
  • StopIteration:生成器没有更多值可以返回。
  • SyntaxError:语法错误。
  • UnicodeError:Unicode相关错误。
  • ValueError:传入无效的参数。

3. 异常处理

异常处理是编写健壮代码的关键。在现实应用中,我们无法保证程序在所有情况下都能正常运行,所以必须处理各种潜在问题。

Python的异常处理机制通过tryexceptfinally标签来实现:

  • try:尝试执行后面的代码块。
  • except:如果在try块中发生异常,可以在这里捕获并处理该异常。
  • except(异常类型):为特定异常准备处理逻辑。
  • except(多个异常):使用逗号分隔多个异常类型。
  • **except:没有异常时执行的代码块。
  • finally:不管是否发生异常,都会执行的代码块。

异常处理流程如下:

  • 执行try内的代码。
  • 如果发生异常,进入对应的except块处理。
  • 如果没有异常,执行else块。
  • 最后,不管是否有异常,都会执行finally块。
  • 4. 手动引发异常

    有时候,我们需要自行引发异常以测试代码的健壮性。可以使用raise关键字来实现:

    # 自定义异常类class DanaValueError(ValueError):    pass# 手动引发一个异常raise DanaValueError("我爱王晓静")

    当引发异常时,可以指定异常类型。可以使用多个except块来处理不同的异常类型:

    try:    print("我爱王晓静")    print(3.1415926)    raise DanaValueError("DanaValueError发生了")finally:    print("我肯定会被执行的")

    总结

    异常处理是编写健壮代码的关键技能。在Python中,可以通过try-except机制来捕获和处理异常,确保程序在各种异常情况下都能稳定运行。掌握这些技能,可以显著提升你的编程水平,避免因简单问题导致程序崩溃。

    转载地址:http://zlztz.baihongyu.com/

    你可能感兴趣的文章
    Java中IO流的打印流-PrintWriter
    查看>>
    正则表达式 【四】
    查看>>
    动态创建对象执行方法
    查看>>
    JS 原型
    查看>>
    删除DOM节点
    查看>>
    深度学习目标检测理论知识(1)
    查看>>
    牛客-链表中环的入口节点(Java)
    查看>>
    【linux自学笔记】文件系统
    查看>>
    【ARM自学笔记】ARM Cortex -A中断系统(程序篇)
    查看>>
    弹性盒子
    查看>>
    vue-cli Failed to download repo vuejs-templates/webpack解决办法
    查看>>
    全网最快b站视频下载(后期发布全网视频下载)
    查看>>
    如何编写路由效果
    查看>>
    解决微信小程序中 calc 失效问题
    查看>>
    web中的本地存储和小程序中的本地存储的区别
    查看>>
    解决npm run eject报错
    查看>>
    JS数组去重的方法
    查看>>
    PTA_L1-016 查验身份证 (15分)
    查看>>
    Python 之变量
    查看>>
    线性代数 笔记1
    查看>>