iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >关于Python中异常(Exception)的汇总
  • 741
分享到

关于Python中异常(Exception)的汇总

异常PythonException 2022-06-04 18:06:45 741人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

前言 Exception类是常用的异常类,该类包括StandardError,StopIteration, GeneratorExit, Warning等异常类。python中的异常使用继承结构创建,可以在

前言

Exception类是常用的异常类,该类包括StandardError,StopIteration, GeneratorExit, Warning等异常类。python中的异常使用继承结构创建,可以在异常处理程序中捕获基类异常,也可以捕获各种子类异常,Python中使用try...except语句捕获异常,异常子句定义在try子句后面。

Python中的异常处理

异常处理的语句结构


try:
 <statements>  #运行try语句块,并试图捕获异常
except <name1>:
 <statements>  #如果name1异常发现,那么执行该语句块。
except (name2, name3):
 <statements>  #如果元组内的任意异常发生,那么捕获它
except <name4> as <variable>:
 <statements>  #如果name4异常发生,那么进入该语句块,并把异常实例命名为variable
except:
 <statements>  #发生了以上所有列出的异常之外的异常
else:
<statements>   #如果没有异常发生,那么执行该语句块
finally:
 <statement>   #无论是否有异常发生,均会执行该语句块。

说明

else和finally是可选的,可能会有0个或多个except,但是,如果出现一个else的话,必须有至少一个except。
不管你如何指定异常,异常总是通过实例对象来识别,并且大多数时候在任意给定的时刻激活。一旦异常在程序中某处由一条except子句捕获,它就死掉了,除非由另一个raise语句或错误重新引发它。

raise语句

raise语句用来手动抛出一个异常,有下面几种调用格式:

raise #可以在raise语句之前创建该实例或者在raise语句中创建。 raise #Python会隐式地创建类的实例 raise name(value) #抛出异常的同时,提供额外信息value raise # 把最近一次产生的异常重新抛出来 raise exception from E

例如:

抛出带有额外信息的ValueError: raise ValueError('we can only accept positive values')

当使用from的时候,第二个表达式指定了另一个异常类或实例,它会附加到引发异常的__cause__属性。如果引发的异常没有捕获,Python把异常也作为标准出错消息的一部分打印出来:

比如下面的代码:


try:
 1/0
except Exception as E:
 raise TypeError('bad input') from E

执行的结果如下:


Traceback (most recent call last):
 File "hh.py", line 2, in <module>
 1/0
ZeroDivisionError: division by zero

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
 File "hh.py", line 4, in <module>
 raise TypeError('bad input') from E
TypeError: bad input

assert语句

assert主要用来做断言,通常用在单元测试中较多,到时候再做介绍。

with...as语句

with语句支持更丰富的基于对象的协议,可以为代码块定义支持进入和离开动作。

with语句对应的环境管理协议要求如下:

环境管理器必须有__enter__和__exit__方法。

__enter__方法会在初始化的时候运行,如果存在ass子在, __enter__函数的返回值会赋值给as子句中的变量,否则,直接丢弃。

代码块中嵌套的代码会执行。

如果with代码块引发异常, __exit__(type,value,traceback)方法就会被调用(带有异常细节)。这些也是由 sys.exc_info返回的相同值.如果此方法返回值为假,则异常会重新引发。否则,异常会终止。正常 情况下异常是应该被重新引发,这样的话才能传递到with语句之外。

如果with代码块没有引发异常, __exit__方法依然会被调用,其type、value以及traceback参数都会以None传递。

下面为一个简单的自定义的上下文管理类。


class Block:
 def __enter__(self):
  print('entering to the block')
  return self
 
 def prt(self, args):
  print('this is the block we do %s' % args)

 def __exit__(self,exc_type, exc_value, exc_tb):
  if exc_type is None:
   print('exit nORMally without exception')
  else:
   print('found exception: %s, and detailed info is %s' % (exc_type, exc_value))
  return False

with Block() as b:
 b.prt('actual work!')
 raise ValueError('wrong')

如果注销到上面的raise语句,那么会正常退出。

在没有注销掉该raise语句的情况下,运行结果如下:


entering to the block
this is the block we do actual work!
found exception: <class 'ValueError'>, and detailed info is wrong
Traceback (most recent call last):
 File "hh.py", line 18, in <module>
 raise ValueError('wrong')
ValueError: wrong

异常处理器

如果发生异常,那么通过调用sys.exc_info()函数,可以返回包含3个元素的元组。 第一个元素就是引发异常类,而第二个是实际引发的实例,第三个元素traceback对象,代表异常最初发生时调用的堆栈。如果一切正常,那么会返回3个None。

Python的Builtins模块中定义的Exception


|Exception Name|Description|
|BaseException|Root class for all exceptions|
| SystemExit|Request termination of Python interpreter|
|KeyboardInterrupt|User interrupted execution (usually by pressing Ctrl+C)|
|Exception|Root class for regular exceptions|
| StopIteration|Iteration has no further values|
| GeneratorExit|Exception sent to generator to tell it to quit|
| SystemExit|Request termination of Python interpreter|
| StandardError|Base class for all standard built-in exceptions|
|  ArithmeticError|Base class for all numeric calculation errors|
|   FloatingPointError|Error in floating point calculation|
|   OverflowError|Calculation exceeded maximum limit for numerical type|
|   ZeroDivisionError|Division (or modulus) by zero error (all numeric types)|
|  AssertionError|Failure of assert statement|
|  AttributeError|No such object attribute|
|  EOFError|End-of-file marker reached without input from built-in|
|  EnvironmentError|Base class for operating system environment errors|
|   IOError|Failure of input/output operation|
|   OSError|Operating system error|
|    windowsError|MS Windows system call failure|
|    ImportError|Failure to import module or object|
|    KeyboardInterrupt|User interrupted execution (usually by pressing Ctrl+C)|
|   LookupError|Base class for invalid data lookup errors|
|    IndexError|No such index in sequence|
|    KeyError|No such key in mapping|
|   MemoryError|Out-of-memory error (non-fatal to Python interpreter)|
|   NameError|Undeclared/uninitialized object(non-attribute)|
|    UnboundLocalError|Access of an uninitialized local variable|
|   ReferenceError|Weak reference tried to access a garbage collected object|
|   RuntimeError|Generic default error during execution|
|    NotImplementedError|Unimplemented method|
|   SyntaxError|Error in Python syntax|
|    IndentationError|Improper indentation|
|     TabErrorg|Improper mixture of TABs and spaces|
|   SystemError|Generic interpreter system error|
|   TypeError|Invalid operation for type|
|   ValueError|Invalid argument given|
|    UnicodeError|Unicode-related error|
|     UnicodeDecodeError|Unicode error during decoding|
|     UnicodeEncodeError|Unicode error during encoding|
|     UnicodeTranslate Error|Unicode error during translation|
|  Warning|Root class for all warnings|
|   DeprecationWarning|Warning about deprecated features|
|   FutureWarning|Warning about constructs that will change semantically in the future|
|   OverflowWarning|Old warning for auto-long upgrade|
|   PendingDeprecation Warning|Warning about features that will be deprecated in the future|
|   RuntimeWarning|Warning about dubious runtime behavior|
|   SyntaxWarning|Warning about dubious syntax|
|   UserWarning|Warning generated by user code|

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

--结束END--

本文标题: 关于Python中异常(Exception)的汇总

本文链接: https://www.lsjlt.com/news/13787.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 关于python time库整理汇总
    目录1.Time库的作用2. Time库的使用时间获取函数时间格式化:将时间以合理的方式展示出来以以字符串的形式构造一个时间程序计时应用:测量起止动作所经历时间的过程3.实例:文本进...
    99+
    2024-04-02
  • 关于Vue3&TypeScript的踩坑汇总
    目录安装环境创建项目1、配置路由2、安装VueX 3、安装国际化4、vite.config.ts常用配置5、找不到模块声明declare6、path模块找不到打包问题Vit...
    99+
    2024-04-02
  • 关于ES6新特性最常用的知识点汇总
    目录1.关键字2.解构3.字符串4.正则5.数组6.函数7.对象8.Symbol9.集合10.Proxy配合Reflect的观察者模式11. Promise12.遍历器13.Gene...
    99+
    2024-04-02
  • java关于调用方法的汇总
    以下我们根据JAVA的调用方法做了整理和总结,以及相关的调用代码也做测试,以下来学习下。java方法主要分为三种:一种是静态方法这种方法的话用static修饰,这个方法不需要与某个特定对象进行绑定;第二种就是常见的没有用static修饰的方...
    99+
    2023-05-30
    java 调用方法 ava
  • Python异常类型以及处理方法汇总
    目录前言1 异常类型1.1 Python内置异常1.2 requests模块的相关异常1.3 用户自定义异常2. 异常捕获2.1 捕获所有异常2.2 捕...
    99+
    2024-04-02
  • Python常见的脚本汇总
    1、冒泡排序 lis = [56,12,1,8,354,10,100,34,56,7,23,456,234,-58] def sortport(): for i in range(len(lis)-1): fo...
    99+
    2023-01-30
    脚本 常见 Python
  • python中常用的内置模块汇总
    内置模块(一) Python内置的模块有很多,我们也已经接触了不少相关模块,接下来咱们就来做一些汇总和介绍。 内置模块有很多 & 模块中的功能也非常多,我们是没有办法注意全局...
    99+
    2024-04-02
  • JAVA中的深情哥-Exception(异常)-上
    文章目录 目录 文章目录 前言 一,Exception的起源  二,异常类  三,自定义异常 总结 前言 大家好,我是最爱吃兽奶,今天给大家介绍一下java中的深情哥 - Exception 秋风依依秋水寒,一点离愁两黯然;今生默默唯轻舞...
    99+
    2023-09-07
    开发语言 java
  • Python中turtle库常用代码汇总
    目录一、设置画布二、画笔1、画笔属性2、绘图命令3. 命令详解三、文字显示为一个圆圈四、画朵小花总结一、设置画布 turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置 ...
    99+
    2024-04-02
  • 关于Python的异常捕获和处理
    目录1 | 语法错误2 | 运行时错误3 |其他异常4 | 异常处理try except 语句的执行流程如下:5 | 获取特定异常的有关信息6 |finally语句 程序运...
    99+
    2023-05-17
    Python异常 Python异常捕获 Python异常处理
  • Java中Exception异常机制的原理
    本篇文章给大家分享的是有关Java中Exception异常机制的原理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Error与Exception的区别与相同点:Error是严重...
    99+
    2023-06-15
  • python中的json模块常用方法汇总
    目录一、概述二、方法详解1.dump()2.dumps3.load4.loads三、代码实战1.dumps()2.dump()4.loads()一、概述 推荐使用参考网站: json...
    99+
    2024-04-02
  • 关于Vue的 watch、computed和methods的区别汇总
    目录1 前言2 基础用法2.1 methods 方法2.2 computed 计算属性2.3 watch 侦听器3 三者的区别3.1 方法 VS 计算属性 3.2 计算属性 VS 侦...
    99+
    2024-04-02
  • 关于python常见异常以及处理方法
    一、常见的异常 1、NameError 未定义变量异常 print(a) # 输出:NameError: name 'a' is not defined 2、IndexError 下...
    99+
    2023-05-16
    python常见异常 python异常处理
  • PHP中Exception异常机制的示例分析
    这篇文章将为大家详细讲解有关PHP中Exception异常机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。异常的基本使用当异常被抛出时,其后的代码不会继续执行,PHP 会尝试查找匹配的 &qu...
    99+
    2023-06-20
  • Python类的常用高级函数汇总
    目录1.基础介绍2.定义一个函数3.__init__4.__getattr__5.__setattr__6.__call__7.__str__1.基础介绍 函数是组织好的,可重复使用...
    99+
    2024-04-02
  • Docker中常见的异常总结
    本篇内容主要讲解“Docker中常见的异常总结”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker中常见的异常总结”吧!异常一docker ps 无响应, Node 节点表现为 NotRe...
    99+
    2023-06-19
  • 关于JavaScript的内存与性能问题解决汇总
    目录一、何为JavaScript内存与性能二、谈谈关于innerHTML的性能问题?1、使用innerHTML的反面教材2、如何解决三、如何解决类似按钮过多问题?四、事件委托的优点有...
    99+
    2024-04-02
  • 关于feign.codec.DecodeException异常的解决方案
    目录feign.codec.DecodeException异常解决错误Typedefinitionerror:[simpletype,classXXXfeign.codec.Deco...
    99+
    2024-04-02
  • Java中关于异常的知识点有哪些
    本文小编为大家详细介绍“Java中关于异常的知识点有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中关于异常的知识点有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。3W原则哪都有的3W原则,JA...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作