iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python异常与错误处理详细讲解
  • 540
分享到

Python异常与错误处理详细讲解

Python异常Python错误处理 2022-12-22 12:12:33 540人浏览 八月长安

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

摘要

基础知识 优先使用异常捕获 LBYL(look before you leap): 在执行一个可能出错的操作时,先做一些关键的条件判断,仅当满足条件时才进行操作。 EAFP(eais

基础知识

优先使用异常捕获

LBYL(look before you leap): 在执行一个可能出错的操作时,先做一些关键的条件判断,仅当满足条件时才进行操作。

EAFP(eaiser to ask for forgiveness than permission): 不做事前检查,直接执行操作。

后者更优: 代码简洁,效率更高

try语句常用知识

把更精确的except语句放在前面

异常类派生关系: BaseException --> Exception --> LookupError --> KeyError

父类被捕获后子类就不会再被触发

使用else分支

try except else

else: 仅当try语句块里面没有抛出任何异常时,才执行else分支

和finally不同,假如在try语句块时碰到了return或者break, 中断了本次异常,那么即使代码没抛出任何异常,else分支内的逻辑也不会被执行

而finally里的语句,无论如何都会被执行,哪怕已经执行了return

使用空raise语句

>>> def incr_by_key(d, key):
...     try:
...         d[key] += 1
...     except KeyError:
...         print('here')
...         raise
...
>>> d = {'a': 1}
>>> incr_by_key(d, 'b')
here
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in incr_by_key
KeyError: 'b'
>>> d['c'] += 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'c'

当一个空raise语句出现在except块里时,它会原封不动地重新抛出当前异常

抛出异常,而不是返回错误

使用上下文管理器

__enter__ __exit__

>>> class DummyContext:
...     def __init__(self, name):
...         self.name = name
...     def __enter__(self):
...         return f"{self.name} -- something"
...     def __exit__(self, exc_type, exc_val, exc_db):
...         print("Exiting")
...         return False
...
>>> with DummyContext('foo') as name:
...     print(f'Name: {name}')
...
Name: foo -- something
Exiting

用于替代finally 语句清理资源

__exit__里面清理资源。

此外__exit__也可以用来对异常进行二次处理然后抛出,或是忽略某种异常等等。

用户忽略异常

一般可以捕获异常后pass

但是也可以:

     def __exit__(self, exc_type, exc_val, exc_db):
         if exc_type == SomeException:
             return True
         return False

此外:使用contextlib里面的suppress也可以实现相同的功能

使用contextmanage装饰器

>>> @contextmanager
... def create_con_obj(host, port, timeout=None):
...     conn = create_conn(host, port, timeout=timeout)
...     try:
...         yield conn
...     finally:
...         conn.close()

yield前面的语句会在进入管理器时执行(类似:__enter__

之后的逻辑会在退出管理器时执行(类似:__exit__

到此这篇关于python异常与错误处理详细讲解的文章就介绍到这了,更多相关Python异常内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python异常与错误处理详细讲解

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

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

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

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

下载Word文档
猜你喜欢
  • Python异常与错误处理详细讲解
    基础知识 优先使用异常捕获 LBYL(look before you leap): 在执行一个可能出错的操作时,先做一些关键的条件判断,仅当满足条件时才进行操作。 EAFP(eais...
    99+
    2022-12-22
    Python异常 Python错误处理
  • Python错误与异常处理
    1. 从键盘输入一个整数,求 100 除以它的商,并显示输出。要求对从键盘输入的数值进行异常处理。 try:     n=int(input("请输入一个整数:"))     x=1...
    99+
    2022-11-13
  • Java超详细讲解异常的处理
    目录1、异常的概念和体系结构1.1异常的概念1.2异常的体系结构及分类2、异常的处理2.1防御式编程2.2异常地抛出2.3异常的捕获(1)异常声明throws(2)try-catch...
    99+
    2022-11-13
  • Java详细讲解异常Exception的处理
    目录异常介绍常见的运行时异常1.空指针异常2.数学运算异常3.数组下标越界异常4.类型转换异常5.数字格式不正确异常异常处理流程异常介绍 基本概念 程序执行中发生的不正常情况称为异常...
    99+
    2022-11-13
  • Python错误和异常总结详细
    目录1、语法错误2、异常3、try...except...语句4、多个except子句5、try...except Exception as e语句6、try...except......
    99+
    2022-11-12
  • Java 超详细讲解Spring MVC异常处理机制
    目录异常处理机制流程图异常处理的两种方式简单异常处理器SimpleMappingExceptionResolver自定义异常处理步骤本章小结异常处理机制流程图 系统中异常包括两类: ...
    99+
    2022-11-13
  • 详解JS中异常与错误处理的正确方法
    目录简介1 面向错误编程1.1 墨菲定律1.2 先判否2. js 内置的错误处理2.1 Error 类2.2 throw2.3 try catch2.4 Promise.catch3...
    99+
    2023-05-16
    JS异常处理 JS错误处理 JS异常
  • JAVA异常与异常处理详解
    一、异常简介什么是异常?异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域的情况,称之为异常。java中异常的体系是怎么样的呢?(推荐:java视频教程)Java中的所有不正常类都继承于Throwable类...
    99+
    2020-06-12
    JAVA
  • Python中的异常处理讲解
    目录一、什么是异常二、异常的种类1 、常用异常类2、异常举例:三、异常处理1、基本语法try...except2、多分支异常 except..except与万能异常:Exceptio...
    99+
    2022-11-11
  • 再谈PHP错误与异常处理
    目录一、异常与错误的概述PHP中什么是异常PHP中什么是错误上面的说法是有前提条件的PHP异常处理很鸡肋?二、ERROR的级别三、PHP异常处理中的黑科技1:set_error_ha...
    99+
    2022-11-12
  • RUST异步流处理方法详细讲解
    目录Stream 特质yield 匿名流try_joinselectSELECT宏几个条件async 问号使用Send traitStream 特质 在同步Rust 中流的...
    99+
    2022-12-16
    RUST异步流处理 RUST流处理
  • Python异常处理详解
    在shell脚本中,常用if来判断程序的某个部分是否可能会出错,并在if的分支中做出对应的处理,从而让程序更具健壮性。if判断是异常处理的一种方式,所有语言都通用。对于特性完整的编程语言来说,都有专门的异常处理机制,有些语言用起来可能会很...
    99+
    2023-01-30
    详解 异常 Python
  • Golang错误处理方式异常与error
    目录一、异常二、错误Go 提供了两种处理错误 方式, 一 种是借助 panic和 recover 的抛出捕获机制, 另一种使用error 错误类型 一、异常 1、go没有try/ca...
    99+
    2023-01-14
    Go异常与error Go异常 Go error
  • plsql的错误信息与异常处理
    7 错误消息与异常处理7.1 异常的介绍(1) 处理异常分为三个步骤:  A 声明异常  B 引发异常  C 处理异常(2) 异常的特征  A 错误类型: ORA-x...
    99+
    2022-10-18
  • Go错误和异常CGO fallthrough处理教程详解
    目录fallthrough代码示例执行结果CGO错误&异常处理错误:error处理异常:panic&recoverpanic&deferdefer执行顺序总结...
    99+
    2022-11-11
  • 详解C++中的异常和错误处理机制
    目录什么是异常处理C++中的异常处理机制什么是错误处理C++中的错误处理机制结论什么是异常处理 异常处理是指在程序执行过程中发生异常或错误时,程序能够捕获并处理这些异常或错误的机制。...
    99+
    2023-05-19
    C++异常处理机制 C++异常处理 C++错误处理机制 C++ 错误处理
  • php常见的错误与异常处理方法
    本篇内容介绍了“php常见的错误与异常处理方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php与其他计算机编程语言在遇到错误就抛出异常不...
    99+
    2023-06-02
  • php7中异常与错误的处理方法
    这篇文章将为大家详细讲解有关php7中异常与错误的处理方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。异常与错误的概述什么叫做异常?异常是指程序运行中不符合预期情况以及与正常流程不同的状况。比如你链接数...
    99+
    2023-06-14
  • Java中的异常与错误如何处理
    这篇文章主要介绍“Java中的异常与错误如何处理”,在日常操作中,相信很多人在Java中的异常与错误如何处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中的异常与错误如何处理”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • python基础之错误和异常处理
    import Exception # except 在捕获错误异常的时候 是要根据具体的错误类型来捕获的 # 用一个块 可以捕获多个不同类型的异常 # EXception ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作