一、简介

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

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

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

c = a/b

print(c)

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

二、异常处理

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

也可以使用多个except,如try…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文件中:

09-Python异常的更多相关文章

  1. python 异常

    引用一段来自菜鸟教程的文章:http://www.runoob.com/python/python-exceptions.html Python 异常处理 python提供了两个非常重要的功能来处理p ...

  2. #21 Python异常

    前言 运行程序时经常遇到各种错误,例如:ImportError(导入模块错误).IndexError(索引错误).NameError(变量错误).SyntaxError(语法错误).Indentati ...

  3. Python异常和异常处理

    Python异常和异常处理2017年12月20日 22:17:08 Megustas_JJC 阅读数:114 标签: python 异常处理 更多 个人分类: Python 版权声明:本文为博主原创文 ...

  4. python——异常except语句用法与引发异常

    except: #捕获所有异常 except: <异常名>: #捕获指定异常 except:<异常名1,异常名2):捕获异常1或者异常2 except:<异常名>,< ...

  5. 笔记-python异常信息输出

    笔记-python异常信息输出 1.      异常信息输出 python异常捕获使用try-except-else-finally语句: 在except 语句中可以使用except as e,然后通 ...

  6. python异常捕获异常堆栈输出

    python异常捕获异常堆栈输出 学习了:https://blog.csdn.net/chris_grass/article/details/77927902 import traceback def ...

  7. 小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理)

    小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理) 异常处理(处理) 1.产生异常.raise 异常类(),抛出异常2. 处理异常: try: xxxxx # 尝试执行的代码. ...

  8. python 异常之进阶操作

    1.文件分析 下面来做一些文件分析操作,分析整本书的信息. 知识点: string.split():将字符串分解为列表. open(filename,‘rb’)或者open(filename,enco ...

  9. Python异常类型及包含关系

    Python异常类型及包含关系,设计异常捕获时参考: BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- ...

  10. 如何处理python异常

    1.python异常有那些? window的机器如果安装了python,则直接可以在idle中查看,打开idle,按F1即可打开帮助文档,按如下路径即可查看,也可以去python官网查看这里不说明了百 ...

随机推荐

  1. Python 图像处理 OpenCV (10):图像处理形态学之顶帽运算与黑帽运算

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...

  2. springboot整合Mybatis(无xml)

    1.pom文件 依赖引入 <parent> <groupId>org.springframework.boot</groupId> <artifactId&g ...

  3. 在Unix系统中执行可执行文件

    这篇文章是我在一个叫做Charlotte数据挖掘的公众号上看到的文章,文首提到转载自"朱小厮的博客",当我今天执行一个自己编译的可执行文件后的运行阶段想到了这篇文章,直接一次成功. ...

  4. 学习ASP.NET Core(11)-解决跨域问题与程序部署

    上一篇我们介绍了系统日志与测试相关的内容并添加了相关的功能:本章我们将介绍跨域与程序部署相关的内容 一.跨域 1.跨域的概念 1.什么是跨域? 一个请求的URL由协议,域名,端口号组成,以百度的htt ...

  5. Spring boot+Mybatisplus用AR模式实现逻辑删除操作

    Mybatisplus的AR模式 Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录.ActiveRecord ...

  6. django OperationalError: unable to open database file 创建数据库

  7. 一个简单的 react 实例: < TodoList >

    <  react     TodoList:  > 组件: //引入React : import React from 'react'; //组件 class TodoList exten ...

  8. android 中使用自定义权限

    1.如果在一个进程中启动另外一个进程的activity <?xml version="1.0" encoding="utf-8"?> <man ...

  9. Python初识函数

    Python初识函数 函数理论篇 什么是函数 在编程语言中的函数不同于数学中的函数.不管是数学上的函数还是编程语言中的函数都是为了完成特定的某一功能而诞生的,他们的区别在于: 1.数学中的函数当输入的 ...

  10. Redis系列(六):数据结构List双向链表LPUSH、LPOP、RPUSH、RPOP、LLEN命令

    1.介绍 redis中的list既实现了栈(先进后出)又实现了队列(先进先出) 1.示意图 2.各命令详解 LPUSH/RPUSH LPUSH: 从队列的左边入队一个或多个元素 将所有指定的值插入到存 ...