我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python——异常处理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python——异常处理

文章目录

异常

  • 异常是在程序执行过程中发生的影响程序正常执行的一个事件。
  • 异常是Python对象,当Python无法正常处理程序时就会抛出一个异常。一旦Python脚本发生异常,程序需要捕获并处理它,否则程序会终止执行。
  • 异常处理使程序能够处理完异常后继续它的正常执行,不至于使程序因异常导致退出或崩溃。
while True:    try:        price=float(input("请输入价格:"))        print('价格为:%5.2f' % price)        break    except ValueError:        print('您输入的不是数字。')
程序运行结果:请输入价格:x您输入的不是数字。请输入价格:y您输入的不是数字。请输入价格:12.989价格为:12.99
  • 上述程序运行时,当在提示符下输入非数字时,float()函数将产生一个ValueError异常。try块中检测到ValueError异常后,终止try中后续代码的执行,转而执行异常处理代码,也就是执行except ValueError语句后面的代码。处理完异常后,继续从while语句的开始部分执行。只要输入的是非数字,float()函数都将产生ValueError异常,break语句不会执行,循环一直继续,程序反复要求用户输入正确的数字。
  • 直到用户输入正确的数字后,float()函数不会抛出ValueError异常,try模块中的代码继续往下执行,直到执行break语句后,退出while循环。

Python中的异常类

  • Python程序出现异常时将抛出一个异常类的对象。
  • Python中所有异常类的根类是BaseException类,它们都是BaseException的直接或间接子类。大部分常规异常类的基类是Exception的子类。
  • 不管程序是否正常退出,都将引发SystemExit异常。例如,在代码中的某个位置调用了sys.exit()函数时,将触发SystemExit异常。利用这个异常,可以阻止程序退出或让用户确认是否真的需要退出程序。
  • KeyboardInterrupt异常是因用户按下Ctrl+C组合键来终止命令行程序而触发。

捕获与处理异常

  • try/except语句用来检测try语句块中的异常,让except语句捕获异常信息并处理。如果不想在异常发生时结束程序,只需要在try里捕获它,并在except中处理捕获到的异常。
try:    <可能出现异常的语句块> except <异常类名字name1>:    <异常处理语句块1>  #如果在try部份引发了'name1'异常,执行这部分语句块except <异常类名字name2> as e1:    <异常处理语句块2>  #如果在try部份引发了'name2'异常,执行这部分语句块except < (异常类名字name3, 异常类名字name4, …)> as e2:    <异常处理语句块3>  #如果引发了'name3'、'name4'、…中任何一个异常,执行该语句块…except:    <异常处理语句块n>   #如果引发了异常,但与上述异常都不匹配,执行此语句块else:             #如果没有上述所列的异常发生,执行else语句块finally:    <任何情况下都要执行的语句块>
  • try中的语句块先执行。如果try语句块中的某一语句执行时发生异常,Python就跳到except部分,从上到下判断抛出的异常对象是否与except后面的异常类相匹配,并执行第一个匹配该异常的except后面的语句块,异常处理完毕。
  • 如果异常发生了,但是没有找到匹配的异常类别,则执行不带任何匹配类型的except语句后面的语句块,异常处理完毕。
  • 如果try语句块的某一语句里发生了异常,却没有匹配的except子句,也没有不带匹配类型的except部分,则异常将往上被递交到上一层的try/except语句进行异常处理,或者直到将异常传递给程序的最上层,从而结束程序。
  • 如果try语句块中的任何语句在执行时没有发生异常,Python将执行else语句后的语句块。
  • 执行完except后的异常处理语句或else后面的语句块后,程序一定会执行finally后面的语句块。这里的语句块主要用来进行收尾操作,无论是否出现异常都将被执行。
  • 一个异常处理模块至少有一个try和一个except语句块,else和finally语句块是可选的。
try:   x=float(input('请输入设备成本:'))   y=int(input('请输入分摊年数:'))   z=x/y   print('每年分摊金额为%.2f'% z)except ZeroDivisionError:   print("发生异常,分摊年数不能为0.")except:   print('输入有误')else:   print("没有错误或异常")finally:   print('不管是否有异常发生,始终执行finally部分的语句')
如果在终端以正确的格式输入,则except后面的模块均不会执行,else后的模块会得到执行,finally后面的模块语句会执行。程序运行结果如下:请输入设备成本:15请输入分摊年数:3每年分摊金额为5.00没有错误或异常不管是否有异常发生,始终执行finally部分的语句
如果在终端输入的被除数为0,则会检测到ZeroDivisionError异常对象,在except ZeroDivisionError之后的模块会得到执行来处理该异常。异常处理完成后,执行finally后面的语句块。程序运行结果如下:请输入设备成本:15请输入分摊年数:0发生异常,分摊年数不能为0.不管是否有异常发生,始终执行finally部分的语句
如果在终端只输入除数,没有输入被除数,try模块中将抛出TypeError异常。在程序的异常处理except中没有列出该类型异常的处理程序模块,但是TypeError是except的子类,因此不带异常类型的except模块能够拦截该异常进行处理。异常处理结束后,finally后面的语句也会得到执行。程序运行结果如下:请输入设备成本:15请输入分摊年数:输入有误不管是否有异常发生,始终执行finally部分的语句

自定义异常类

  • 异常处理流程一般包括三个步骤:
    • 将可能产生异常的代码段放在try代码块中;
    • 出现特定情况时抛出(raise)异常;
    • 在except部分捕获并处理异常。
  • 笔记前面部分案例使用的标准模块中的异常都是由系统自动抛出,隐藏了异常抛出的步骤。
  • 仅仅使用标准模块中的异常类通常不能满足系统开发的需要,有时候需要自定义一些异常类。系统无法识别自定义的异常类,只能在程序中显式地使用raise抛出异常。可以通过BaseException类或其子类来创建自定义异常类。
  • 如下程序清单给出了一个自定义类InvalidNumberError,该类继承自类ArithmeticError。
    在这里插入图片描述
    在这里插入图片描述
  • 因为InvalidNumberError是一个自定义类,因此需要使用raise来显式地抛出异常。自定义异常的其他使用方法与标准模块中的异常类使用方法相同。

with语句

  • with语句是其中一个隐藏低层次抽象的方法。目的是简化类似于try-except-finally这样的代码。
  • try-except-finally通常用于保证资源的唯一分配,并在任务结束时释放资源,如线程资源、文件、数据库连接等。在这些场合下使用with语句将使代码更加简洁。with语句的语法如下:
with context-expression [as var]:with语句块

为了读取、打印该文件中的所有内容,并确保程序在出现异常时也能正确关闭文件对象,使用try-finally的程序:

try:    f=open('testwith.txt','r')    for line in f:        print(line,end='')finally:    f.close()
  • 使用try-finally语句来确保当try语句块中出现异常时,f.close()语句能够得到执行。如果采用with语句,程序结构将得到进一步的简化。
with open('testwith.txt','r') as f:    for line in f:        print(line,end='')

由于使用了with语句,不需要try-finally语句来确保文件对象的关闭。无论该程序是否出现异常,文件对象都将由系统自动关闭。

  • 并不是所有的对象都支持with语句这一新的特性。只有支持上下文管理协议的对象才能使用with语句。
  • 第一批支持该协议的对象有:file、decimal.Context、thread.LockType、threading.Lock、threading.RLock、threading.Condition、threading.Semaphore、threading.BoundedSemaphore。

断言

断言从Python1.5版本开始引入,是申明表达式为真的判定。如果表达式为假则抛出异常。断言语句可以理解为raise-if-not语句,用来测试表达式,如果表达式为假,则触发AssertionError异常;如果表达式为真,也就是断言成功,则程序不采取任何措施。断言的语法格式如下:
assert expression [, arguments]
其中expression是断言表达式;arguments是断言表达式为假时传递给AssertionError对象的字符串。

  • 以下两个例子演示了assert语句后面表达式分别为真与假时的运行结果。
    在这里插入图片描述
    和其他异常一样,AssertionError也可以通过try-except来捕获。如果没有捕获,该异常将终止程序的运行。
  • 下面程序演示了利用try-except捕获AssertionError异常的方法。

在这里插入图片描述

来源地址:https://blog.csdn.net/m0_65639340/article/details/126261176

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python——异常处理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

异常--python异常处理

--****--python 异常处理------------------------------------------------------------------------------****DB API中定义了一些数据库操作的错
2023-01-31

Python -- 异常处理

当一个小人物冲向大时代,有多少伤害埋伏左右;      -- 北岛《城门开》当一个大梦想埋于小身体,有多少潜能冲破束缚。      -- 小Q 《梦想家》-------------------------------------------
2023-01-31

python异常处理

import re,random,tracebackkk ='不要惹怒胖子,后果自己看'p =
2023-01-31

Python 异常处理

写一个命令分发器初步要求 :程序员可以方便地注册函数到某一个命令, 用户输入命令时, 路由到注册的函数, 如果此命令没有对应的函数, 执行默认函数分析 :输入命令映射到一个函数, 并执行这个函数, 应该是cmd_tbl[cmd] = fn
2023-01-31

Python之异常处理

错误包括语法错误和逻辑错误异常是程序运行时发生错误的信号,解释器追踪程序,根据错误抛出的异常。常用的异常:AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError 输入/输出异常;基本上是
2023-01-30

Python 之异常处理

一 错误和异常•错误分两种:1、语法错误1 #!/usr/bin/env python2 # -*- coding:utf-8 -*-3 # 举列4 print('hello world' # 少)5 6 def test: # 少()
2023-01-30

python的异常处理

1.1什么是异常?异常时程序发生错误的信号,一旦程序出错机会产生一种类型的异常,1.2为什么要处理异常?为了保证程序的健壮性1.3怎么处理异常?语法错误:程序运行前就应该解决逻辑错误:try…except1.4五种异常处理语法:异常处理一:
2023-01-31

python try异常处理

错误和异常: 错误: nameerror 未声明、初始化对象 indexerror 序列中没有此索引 syntaxerror 语法错误
2023-01-31

python3:Python 异常处理以

try …except…else 语句是处理异常公式, try 是有可能抛异常的代码块, except 抓取异常的类型, else 是指当没有抓到抛错,就运行这块代码。请看下下边的例子:try: print("抓取的有可能的代码块")
2023-01-31

分析Python异常处理

本篇内容主要讲解“分析Python异常处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析Python异常处理”吧!  “你不可能总是对的”  甚至计算机也会有失误的时候。当然程序员也不例外,
2023-06-01

python异常处理--try...except

在python中,用try来测试可能出现异常的语句,然后用except来处理可能出现的异常,try except的表达形式如下:try: 语句except [exception,[data...]]: Do somethingexcep
2023-01-30

python应用:异常处理

Python的错误异常在大部分IDE编辑器中则可以直接显示出来,便于开发人员的调试及修改工作,对初学者也比较友好。  Python中包含错误和异常两种情况,错误主要是常见的语法错误SyntaxError,并且在错误提示中会有倒三角箭头的修改
2023-01-30

Python异常处理详解

在shell脚本中,常用if来判断程序的某个部分是否可能会出错,并在if的分支中做出对应的处理,从而让程序更具健壮性。if判断是异常处理的一种方式,所有语言都通用。对于特性完整的编程语言来说,都有专门的异常处理机制,有些语言用起来可能会很复
2023-01-30

Python学习 :异常处理

异常处理  什么是异常处理  - python解释器检测到错误,触发异常(也允许程序员自己触发了异常)  - 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,只与异常处理有关)  - 如果捕捉成功则进入另外一个处理分支,
2023-01-30

Python 中的异常处理

异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你快速修复问题。在Python中,和不部分高级语言一样,使用了try/except/finally语句块来处理异常,如果你有其他
2023-01-31

Python基础:异常处理

如何处理异常  无论发生什么情况,finally block 中的语句都会被执行,哪怕前面的 try 和 excep block 中使用了 return 语句。import systry: f = open('file.txt', '
2023-01-31

python 异常处理总结

最近,做个小项目经常会遇到Python 的异常,让人非常头疼,故对异常进行整理,避免下次遇到异常不知所措,以下就是对Python 异常进行的整理。 1.Python异常类 异常描述NameError尝试访问一个没有申明的变量ZeroDivi
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录