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

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

程序错误处理与异常管理

程序在执行过程中可能会遇到各种错误,这些错误可以分为两大类:语法错误逻辑错误。语法错误通常无法被程序本身处理,会导致程序崩溃,而逻辑错误则可能通过异常处理来管理,从而让程序继续执行或提供友好提示。

异常处理的基本结构

在Python中,异常处理可以通过tryexceptelsefinally这几个关键字来实现。try块用于包裹需要可能出错的代码,except用于指定处理某类错误的代码块,else用于在没有异常发生时执行的代码块,而finally则用于无论是否发生异常,始终会执行的代码块,通常用于释放资源或确保操作的最终状态。

常见异常类型

  • ValueError:用于表示提供给函数的某个实际参数不符合预期类型或值范围的情况。例如,当尝试将字符串作为数字传递给int()函数时,会引发ValueError异常。
  • IndexError:用于表示在某个序列中进行索引访问时,索引超出了序列的有效范围。
  • Exception:这是一个万能的异常类型,用于处理所有未被具体命名的异常。可以用来捕获其他类型的错误,例如网络连接错误、文件操作错误等。
  • 异常处理的优点

  • 便于管理程序流程:通过捕捉异常,可以让程序在遇到错误时不崩溃,而是执行预定义的错误处理逻辑,从而继续执行剩余的代码。
  • 提高程序的健壮性:良好的异常处理可以使程序更稳健,避免因未能处理的错误而导致程序终止。
  • 确保资源的安全释放:在文件操作等场景中,finally块可以用来确保资源(如文件句柄)在异常发生时也能被正确释放。
  • 代码示例

    def main():    try:        f = open('test.txt', 'w')        for line in f:            int(line)        return True    except:        print('Error')        return False    else:        print('success')    finally:        f.close()
    • try:包含了程序中可能会抛出错误的代码。
    • except:用于捕捉特定的异常类型。例如,except ValueError会捕捉到输入错误的情况。
    • else:在没有异常发生时会执行。可以用于标记正常流程的代码。
    • finally:无论程序是否抛出异常,最终都会执行此块。通常用于释放资源或确保操作的最终状态。

    注意事项

  • except块可以有多个分支:可以针对不同的异常类型定义多个except块。例如:

    try:    # 可能抛出错误的代码except ValueError:    print('输入错误')except IndexError:    print('超出列表的索引长度了')except Exception:    print('万能处理,忽略所有的错误类型')
  • except Exception:用于万能处理:如果不指定具体的异常类型,except Exception:会捕获所有未被命名的异常。这通常用于做最后的错误处理,忽略其他类型的错误。

  • finally块的执行顺序:在tryexceptelse块之后,finally块总是会被执行。即使函数或方法通过return语句返回值,finally块也会在返回之前执行。

  • 通过合理使用tryexceptelsefinally块,可以有效地管理程序中的异常,提高程序的健壮性和可靠性。

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

    你可能感兴趣的文章
    因SGA分配错误无法启动数据库
    查看>>
    Oracle修改字段类型方法总结
    查看>>
    ORA-00020 超过当前最大连接数
    查看>>
    合理控制oracle数据库具有DBA权限的用户
    查看>>
    【Android】源码分析 - Activity启动流程
    查看>>
    喝红茶是否会上火
    查看>>
    Android进阶解密读书笔记2——第2章:Android系统启动——第1、2小节
    查看>>
    Android进阶解密读书笔记3——第2章:Android系统启动——第3、4、5、6小节
    查看>>
    GreenDao之注解
    查看>>
    Android使用Font Awesome
    查看>>
    Execution failed for task ':app:compileDebugKotlin'
    查看>>
    主线程中Looper的轮询死循环为何没有阻塞主线程?
    查看>>
    Gradle实战四:Jenkins持续集成
    查看>>
    使用RestTemplate,显示请求信息,响应信息
    查看>>
    wgcloud运维监控系统错误:防篡改校验错误次数大于10次,不再上报数据
    查看>>
    为什么WGCLOUD安装完后,启动服务端打不开网页
    查看>>
    wgcloud网络监控出现负值
    查看>>
    ios 官方sample
    查看>>
    iOS 开发官方文档链接收集
    查看>>
    网易云面试(Android岗)之旅,差点被这些基础题绊了跟头。
    查看>>