Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 636|回复: 0

Python异常捕获与处理

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-17 14:23:53 | 显示全部楼层 |阅读模式

    一、任务描述

      本实验任务主要对Python异常进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python异常的基本操作。并对异常的基本操作进行整理并填写工作任务报告。

    二、任务目标

    1、掌握Python异常的捕获

    2、掌握Python异常的处理

    三、任务环境

    Ubuntu16.04、Python2.7

    四、任务分析

      异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

      一般情况下,在Python无法正常处理程序时就会发生一个异常。

      异常是Python对象,表示一个错误。

      当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

    五、任务实施

    步骤1、环境准备

      右击Ubuntu操作系统桌面,从弹出菜单中选择【Open in Terminal】命令打开终端。

      通过【cd /home】切换到home目录下。【ls】查看该目录下的所有内容。

     

    图1 切换目录

      【mkdir except】在home目录下创建except文件夹。

    图2 创建文件夹

    步骤2、捕捉异常

      【cd except】切换到except目录下,【vim except1.py】回车后创建并编辑名为except1的Python文件

    图3 创建Python文件

      回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。

      分别获取用户输入的x与y值,并进行除法运算。

    图4 编辑Python文件

      编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python except1.py】执行except1的Python文件。

      分别输入第一个数字6,第二个数字0。回车后报ZeroDivisionError异常,该异常在除法或者模除操作的第二个参数为0时引发。

    图5 运行Python文件

      再次进入except1.py文件编辑状态,修改程序。

    图6 编辑Python文件

      再次运行except1.py程序。再次输入第一个数字6,第二个数字0。回车后不报异常,并将except后的打印语句输出。根据结果证明try/except将异常捕捉并处理

    图7 运行Python文件

      如果用户在提示符后面输入非数字类型的值,就会产生另外一个异常。

      运行except1.py程序,输入第一个数字6,第二个值为’shiyanbar’,回车后报TypeError异常。

    图8 运行Python文件

      因为except子句只寻找ZeroDivisionError异常,这次的错误就溜过了检查并导致程序终止。

      捕捉这个异常,可以直接在同一个try/except语句后面加上另一个except字句。

      再次进入except1.py文件编辑状态,修改程序。

    图9 编辑Python文件

      再次运行except1.py程序。再次输入第一个数字6,第二个值为’shiyanbar’。回车后不报异常,并将except后的打印语句输出。

    图10 运行Python文件

      当然这种解决办法可以捕获异常,但产生的问题是程序中会增加一大堆可能错误情况的except,会让代码相当的难读。

      如果需要用一个块解决多个类型异常,可以将它们作为元组列出。

      再次进入except1.py文件编辑状态,修改程序即可。

    图11 编辑Python文件

      如果想让程序继续运行,但是又因为某种原因想记录下错误。

      再次进入except1.py文件编辑状态,修改程序。程序会打印异常,并且程序会继续运行。

    图12 运行Python文件

      再次运行except1.py程序。再次输入第一个数字6,第二个值为0。回车后不报异常,并将异常的信息输出。

    图13 运行Python文件

      就算程序中能处理好几种类型的异常,但有些异常还是会从眼皮下溜走。

      再次运行except1.py程序。再次输入第一个数字6,第二个值为空。回车后报SyntaxError异常。

    图14 运行Python文件

      可以用一段代码捕捉所有异常,可以在except子句中忽略所有的异常类。

      再次进入except1.py文件编辑状态,修改程序。

      像这样捕捉所有的异常是危险的,因为会隐藏程序员未想到并且未做好准备处理的错误等。这时使用except Exception,e会更好些。

    图15 运行Python文件

      在有些情况中,没有异常发生执行一段代码是很有用的,可以像对条件和循环语句那样,给try/except添加个else字句。

      再次进入except1.py文件编辑状态,修改程序。

      这里的循环只在没有异常发生引发的情况下才会退出(由else字句中的break语句退出),只要有错误发生,程序会不断要求重新输入,并将异常信息打印。

    图16 编辑Python文件

      再次运行except1.py程序。

      再次输入第一个数字6,第二个值为0。回车后报’integer division or modulo by zero’异常。

      再次输入第一个数字6,第二个值为’shiyanbar’,回车后报’unsupported operand type(s) for /: ‘int’ and ‘str’’。

      再次输入第一个数字6,第二个值为3,得到除结果。

    图17 运行Python文件

      最后,finally字句可以用来在可能的异常后进行清理,和try联合使用。

      通过【vim except2.py】创建并编辑名为except2的Python文件。编辑如下代码。

      在程序中,finally字句肯定会被执行,不管try字句中是否发生异常。

    图18 编辑Python文件

      【python except2.py】运行python文件,在程序崩溃之前,对于变量x的清理完成。

      因为使用del语句删除一个变量是非常不负责的清理手段,所有finally子句用于关闭文件或关闭因系统错误而无法正常释放的资源。比如文件关闭,释放锁,把数据库连接返还给连接池等

    图19 运行Python文件
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 18:00 , Processed in 0.074280 second(s), 39 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表