iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python3:Python 异常处理以
  • 847
分享到

python3:Python 异常处理以

异常Python 2023-01-31 01:01:01 847人浏览 泡泡鱼

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

摘要

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

try …except…else 语句

是处理异常公式, try 是有可能抛异常的代码块, except 抓取异常的类型, else 是指当没有抓到抛错,就运行这块代码。请看下下边的例子:

try:
    print("抓取的有可能的代码块")
    raise ioError
except IOError as e:
    print("except  IOError")
except OSError as e:
    print("except OSError")
else:
    print("other erro")

finally:
    print("i am  finally")
#打印结果:
抓取的有可能的代码块
except  IOError
i am  finally

从结果来看 走的路线是:
try(按照raise 的error 找except)>找到except并执行except代码块>执行finally语句块
如果没有抛错走的路线是:
try 没有error>走else 语句>finally
看来不管有没有错误, finally 语句一定会执行到。
在用到finally 要注意他会覆盖 except or else 的返回值。

def try_list():
    try:
        print("抓取的有可能的代码块")

        raise OSError
        return  1

    except IOError as e:
        print("except  IOError")
        return 2
    except OSError as e:
        print("except OSError")
        return 3
    else:
        print("other erro")
        return 4

    finally:
        print("i am  finally")
        return 5

print(try_list())
#打印结果

抓取的有可能的代码块
except  IOError
i am  finally
5

从打印的结果 ,他覆盖了 return 3。
如果走else路线同样return 的4 也会被覆盖, 自己试试下。
那小伙伴有疑问 什么情况下使用 finally 呢
答案: 是在释放资源的时候
看下边的例子。

def try_list():
    try:
        fp=open("Test。txt")
        raise OSError
        fp.close()
    except IOError as e:
        fp.close()
    except OSError as e:
        fp.close()
        print("except OSError")
    else:
        print("other erro")
        fp.close()

大家看了 吗, 只要有流程的分支的地方一定要加上这个 fp.close(),
如果再加分支,还需要再加这个close 函数。
有没有更好的解决方法吗? 答案就是 用finally。请看下边的代码:

def try_list():
    try:
        fp=open("Test。txt")
        raise OSError      
    except IOError as e:      
    except OSError as e:    
        print("except OSError")
    else:
        print("other erro")
    finally:
        fp.close()

大家看看是不是很神奇, 资源的释放不光是文件的关闭,还有socket 连接,数据库的连接

上边的内容只是复习下异常处理的内容, 下边才是重头戏 with上下文管理器

with上下文管理器

with上下文管理器协议包括两个魔法函数 1.__enter__2.exit
用实例来解释下这两个魔法函数

class Person:
    def __enter__(self):    #获取资源
        print("enter")
    def __exit__(self, exc_type, exc_val, exc_tb):   #释放资源
        print("exit")
    def said(self):
        print("said")
        
 with Person() as P:
   P.said()

打印结果是:
enter
Traceback (most recent call last):
exit
File “C:/Users/tengfei/
PyCharmProjects/test1/alert.py”, line 12, in
P.said()
AttributeError: ‘NoneType’ object has no attribute ‘said’

根据提示我们就知道了, 我们实例化是“NoneType” 类型,意思就是空的对象。

原因是 因为我们在获取资源(enter)没有返回值,所以默认返回的是空。
我们加上 返回值 就可以运行成功了如下:

class Person:
    def __enter__(self):  #并没有调用,也会运行这个函数
        print("enter")  
       # return  self

    def __exit__(self, exc_type, exc_val, exc_tb):   #并没有调用,也会运行这个函数
        print("exit")
    def said(self):
        print("said")

with Person() as P:
    P.said()

打印结果:
enter #并没有调用,也会运行这个函数
said
exit #并没有调用,也会运行这个函数

总结
上下文管理器协议 是用with 进行调用,默认调用了 enter 和 exit 两个魔法函数。
with是对try…expect…finally语法的一种简化,并且提供了对于异常非常好的处理方式。
根据实际需要应用在不同的场景。

--结束END--

本文标题: python3:Python 异常处理以

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

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

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

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

下载Word文档
猜你喜欢
  • python3:Python 异常处理以
    try …except…else 语句 是处理异常公式, try 是有可能抛异常的代码块, except 抓取异常的类型, else 是指当没有抓到抛错,就运行这块代码。请看下下边的例子: try: print("抓取的有...
    99+
    2023-01-31
    异常 Python
  • python3的异常处理
    在python运行的时候难免出现一些异常,但是python在遇到异常的时候就会停止了,但是有时候我们需要python即使在有异常的时候也需要继续向下运行,这个时候我们就需要用到异常处理了.1.简单的异常处理如: print(a) Trace...
    99+
    2023-01-31
    异常
  • 异常--python异常处理
    --****--python 异常处理------------------------------------------------------------------------------****DB API中定义了一些数据库操作的错...
    99+
    2023-01-31
    异常 python
  • Python3的异常捕获和处理
    1.try 和 except 这是异常语句。使用了这个可以对报错的代码,也会继续 执行下去而不会报错,不执行后面的代码。try是捕获异常,在try里的代码执行如果出错后,就会执行在execpt里的代码。try: print(2/0)...
    99+
    2023-01-31
    异常
  • 关于python常见异常以及处理方法
    一、常见的异常 1、NameError 未定义变量异常 print(a) # 输出:NameError: name 'a' is not defined 2、IndexError 下...
    99+
    2023-05-16
    python常见异常 python异常处理
  • python异常处理
    import re,random,traceback kk ='<img src="//kanimg.9ku.com/Article/20170727/1501135687683763.gif" alt="不要惹怒胖子,后果自己看"&...
    99+
    2023-01-31
    异常 python
  • Python——异常处理
    文章目录 异常Python中的异常类捕获与处理异常自定义异常类with语句断言 异常 异常是在程序执行过程中发生的影响程序正常执行的一个事件。异常是Python对象,当Python无法...
    99+
    2023-09-04
    python 开发语言 pycharm
  • Python 异常处理
    写一个命令分发器初步要求 : 程序员可以方便地注册函数到某一个命令, 用户输入命令时, 路由到注册的函数, 如果此命令没有对应的函数, 执行默认函数分析 : 输入命令映射到一个函数, 并执行这个函数, 应该是cmd_tbl[cmd] = f...
    99+
    2023-01-31
    异常 Python
  • Python -- 异常处理
    当一个小人物冲向大时代,有多少伤害埋伏左右;      -- 北岛《城门开》当一个大梦想埋于小身体,有多少潜能冲破束缚。      -- 小Q 《梦想家》-------------------------------------------...
    99+
    2023-01-31
    异常 Python
  • Java异常(Exception)处理以及常见异常总结
    目录前言异常简介 异常类型 总结前言 很多事件并非总是按照人们自己设计意愿顺利发展的,经常出现这样那样的异常情况。例如: 你计划周末郊游,计划从家里出发→到达目的→游泳→烧烤→回家。...
    99+
    2024-04-02
  • Python 之异常处理
    一 错误和异常 •错误分两种: 1、语法错误 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # 举列 4 print('hello world' # 少) 5 6 def ...
    99+
    2023-01-30
    异常 Python
  • python try异常处理
    错误和异常: 错误: nameerror 未声明、初始化对象 indexerror 序列中没有此索引 syntaxerror 语法...
    99+
    2023-01-31
    异常 python
  • Python之异常处理
    错误包括语法错误和逻辑错误 异常是程序运行时发生错误的信号,解释器追踪程序,根据错误抛出的异常。 常用的异常: AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError 输入/输出异常...
    99+
    2023-01-30
    异常 Python
  • python的异常处理
    1.1什么是异常?异常时程序发生错误的信号,一旦程序出错机会产生一种类型的异常,1.2为什么要处理异常?为了保证程序的健壮性1.3怎么处理异常?语法错误:程序运行前就应该解决逻辑错误:try…except1.4五种异常处理语法:异常处理一:...
    99+
    2023-01-31
    异常 python
  • Python异常类型以及处理方法汇总
    目录前言1 异常类型1.1 Python内置异常1.2 requests模块的相关异常1.3 用户自定义异常2. 异常捕获2.1 捕获所有异常2.2 捕...
    99+
    2024-04-02
  • python3--面向对象内置方法例子,python异常处理
    from collections import namedtuple Card = namedtuple('Card', ['ranks',&nbs...
    99+
    2023-01-30
    面向对象 例子 异常
  • Python异常处理详解
    在shell脚本中,常用if来判断程序的某个部分是否可能会出错,并在if的分支中做出对应的处理,从而让程序更具健壮性。if判断是异常处理的一种方式,所有语言都通用。对于特性完整的编程语言来说,都有专门的异常处理机制,有些语言用起来可能会很...
    99+
    2023-01-30
    详解 异常 Python
  • Python基础:异常处理
    如何处理异常   无论发生什么情况,finally block 中的语句都会被执行,哪怕前面的 try 和 excep block 中使用了 return 语句。 import sys try: f = open('file....
    99+
    2023-01-31
    异常 基础 Python
  • Python常见异常类型处理
    目录1.Python语法错误 2.Python运行时错误 前言: 开发人员在编写程序时,难免会遇到错误,有的是编写人员疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还...
    99+
    2024-04-02
  • python异常处理--try...except
    在python中,用try来测试可能出现异常的语句,然后用except来处理可能出现的异常,try except的表达形式如下:try:    语句except [exception,[data...]]:  ...
    99+
    2023-01-30
    异常 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作