zoukankan      html  css  js  c++  java
  • 09-Python异常

    、简介

    在实际的工作过程中,我们会遇到各种问题,比如文件不存在,代码运行不符合某些特定逻辑等,程序在运行时,遇到这些问题便会发生异常。英文是Exception

    a = float(input('请输入一个数字:'))

    b = float(input('请输入另一个数字:'))

    c = a/b

    print(c)

     

    在上面的这个程序中,要求我们输入数字,但当我们输入了字符时,不符合代码运行规则,因此出现错误。

    二、异常处理

    使用try…except来处理异常。我们把语句放在try模块中,把错误处理语句放在except 中。

    也可以使用多个excepttry…except…except…

    try:
    
        a = float(input('请输入一个数字:'))
    
        b = float(input('请输入另一个数字:'))
    
        c = a / b
    
        print(c)
    
    except ValueError:
    
        print('输入必须为数字')
    
    except ZeroDivisionError:
    
    print('除数不能为0')

     

    使用异常后,输入错误时则执行相应的异常部分的程序块

    三、try….finally结构

    在程序执行的过程中,有的程序块无论是否发生异常,我们都希望它能够执行,这时就引入了finally结构。在finally结构后面的程序便是能够执行的程序。通常用来释放try中申请的资源。

    try:
    
        w = open('C:/love.txt','r')   #打开文件love.txt,模式为r,表示不存在则报错
    
        text = w.readline() #读取一行的数据
    
        print(text)
    
    except :          #发生异常执行
    
        print('文件未找到')
    
    finally:
    
        print('执行完毕')
    
        try:   #文件不存在,关闭会产生异常
    
            w.close()
    
        except BaseException as a:    #打印异常产生的原因
    
            print(a)

    执行结果:

     

    四、with 语句

    Finally块由于是否发生异常都会执行,所以通常用于释放资源的代码,with语句也可以轻松的实现这种功能。

    with上下文管理可以自动管理资源,在with模块中,无论是否发生异常,总能保证资源的释放。

    with open(‘F:/sum.txt’, “r”)  as f:

      content = f.readline()

      print(content)

    print(‘执行完毕,恢复进入代码之前的状态’)

    该程序表示打开F盘的sum.txt文件,读写模式为只读(r)模式。读完之后程序会自动关闭。

    执行结果

    按时符文工房

    执行完毕,恢复进入代码之前的状态

    五、traceback模块

    捕获并打印异常

    import traceback
    
    try:
    
        print('开始')
    
        a = 10/0
    
    except:
    
    traceback.print_exc()

    运行结果:

    import traceback
    
    try:
    
        print('开始')
    
        a = 10/0
    
    except:
    
        with open('F:/sum.txt', 'a') as f:
    
            traceback.print_exc(file=f)

    该程序表示如果发生异常时,打开F盘的sum文件,读写模式为a(只能写,表示文件不存在则创建该文件)。把异常写入文件中。

    输出结果:

    Sum文件中:

     

  • 相关阅读:
    【转】团队管理
    Oracle 11g中关于数据定义的思考
    【转】InfoQ的Java安全认证机制
    Oracle 11g windows简体中文版安装指南
    【转】InfoQ的集成Java内容仓库和Spring
    Oracle数据库常用操作命令(一)
    常用DQL
    如何处理Oracle客户端查询乱码问题
    Documentum中的TCS与对应权限设置
    【转】Windows系统下的Apache性能优化mpm
  • 原文地址:https://www.cnblogs.com/clearlie/p/13182452.html
Copyright © 2011-2022 走看看