Python--一言不合就try一下?

这篇具有很好参考价值的文章主要介绍了Python--一言不合就try一下?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里需要注意的是错误是Error,异常是Exception。 异常是可以被捕捉的,被处理的,但是错误是不能被捕获的。异常官方文档

我们一般情况下,习惯性的叫pycharm控制台给出的红色字体叫报错。其实不然,是异常。

异常产生: raise语句显示的抛出异常 Python解释器自己检测到的异常,并引发它 

print(1/0)
"""
 print(1/0)
ZeroDivisionError: division by zero
"""
def fuc(num):

    if num == 1:
        raise Exception('错了呢')
fuc(1)
"""
    raise Exception('错了呢')
Exception: 错了呢
"""

看示例一中带有Error,实则并非正真的错误,它是由一层一层代码结构继承下来的,可以理解为继承自异常类下的Error类名。 

捕获异常

try:
    print("正在捕捉")
    print(1/0)
except ZeroDivisionError:
    print("不可以除0")
"""
正在捕捉
不可以除0
"""

多个except

try:
    n = int(input('请输入一个数字:'))
    print(n)
except ValueError:
    print("输入整数啦")
except KeyError:
    print("key not found")
except FileNotFoundError:
    print("file not found")

:::danger 在try后面,可以接多个except,在异常后,会精准输出对应的异常提示。 :::

except与打印指定信息

正常情况下,except可以捕捉错误类型,且打印指定的错误信息 

那么有没有一种方法可以直接访问捕捉异常呢,俗称:只想捕捉异常并直接打印对应信息。肯定有的 

class Myexception(Exception):
    def __init__(self,code,message):
        self.code = code
        self.message = message

try:
    raise Myexception(code="404",message="Not")
except ValueError:
    print("输入整数啦")
except KeyError:
    print("key not found")
except FileNotFoundError:
    print("file not found")
except:
    print("我啥都捕捉")
"""
我啥都捕捉
"""

不论在何时都可以使用except。这里写的复杂例子后续还有其他内容要说。 Myexception继承自Exception,并且初始化了。这跟源码有关系。

不同层次的打印信息

正常情况下我们是直接捕捉错误并且print的。 还有另一种方式:

class Myexception(Exception):
    def __init__(self,code,message):
        self.code = code
        self.message = message

try:
    raise Myexception(code="404",message="Not")
except ValueError:
    print("输入整数啦")
except KeyError:
    print("key not found")
except FileNotFoundError:
    print("file not found")
except Exception as e:
    print(e)
    print(e.code,e.message)
    print("我就是猖狂,我全部揽下来")

那就是as e的方式,我们需要在抛出异常的时候传入初始化参数,也就是报错提示,随后捕捉的时候使用.code,.message的方式输出。这里的e,也可以是其他的东西,类似于变量。

finally

可以理解为只要写了它,不论如何都会执行先关语句。在退出try的时候总是会执行。

try:
    f  = open('test')
except ValueError as e:
    print(e.args,e.__dict__,sep='||')
except Exception as e:
    print(e.args,e.__dict__,sep='||')
finally:
    print("不论怎么样,我都会执行")
"""
(2, 'No such file or directory')||{}
不论怎么样,我都会执行
"""

可以看到即使异常了,也还是会执行的。sep的用法,请看零散小方法

else

在没有异常的时候执行这个语句

try:
    print(1//1)
except ValueError as e:
    print(e.args,e.__dict__,sep='||')
except Exception as e:
    print(e.args,e.__dict__,sep='||')
else:
    print("No Exception,action")
"""
1
No Exception,action
"""

finally和else

try:
    print(1//1)
except ValueError as e:
    print(e.args,e.__dict__,sep='||')
except Exception as e:
    print(e.args,e.__dict__,sep='||')
else:
    print("No Exception,action")
finally:
    print("Start Action , Show Time")
"""
1
No Exception,action
Start Action , Show Time
"""

这二者可以结合使用,此外你也可以在这其中加入一系列的代码,例如for循环,if判断等

小结

1、如果try中语句执行时发生异常,搜索except子句,并执行第一个匹配该异常的except子句 2、如果try中语句执行时发生异常,却没有匹配的except子句,异常将被递交到外层的try,如果外层不处理这个异常,异常将继续向外层传递。如果都不处理该异常,则会传递到最外层,如果还没有处理,就终止异常所在的线程 3、如果在try执行时没有发生异常,如有else子句,可执行else子句中的语句 4、无论try中是否发生异常,finally子句最终都会执行文章来源地址https://www.toymoban.com/news/detail-434761.html

到了这里,关于Python--一言不合就try一下?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 29K star!关于shell,你需要的都在这里

    Awesome 是GitHub上一个神奇的单词,搜索Awesome可以发现非常多精彩的汇总性项目,涉及到各种方面,而且star都非常多。 今天我们推荐的开源项目帮你整理了玩转shell所需的一切,本项目目前在GitHub已超过29K Star,它就是:awesome-shell。 awesome-shell 是一个精选的资源列表,里面包括

    2024年01月17日
    浏览(48)
  • 低代码你需要了解一下

    低代码的概念可以追溯到1980年代,当时IBM的快速应用程序开发工具(RAD)被冠以新的名称——低代码,由此,低代码的概念首次面向大众。然而,在近40年的历程中,低代码发展经历了两个阶段: 第一阶段是1980-2015年,这一阶段低代码应用平台市场发展比较迟缓,表现亮眼的

    2024年02月03日
    浏览(39)
  • 百度一下文心一言app:探索人工智能的无限可能

    大家好,小发猫降ai今天来聊聊百度一下文心一言app:探索人工智能的无限可能,希望能给大家提供一点参考。降ai辅写 以下是针对论文AI辅写率高的情况,提供一些修改建议和技巧,可以借助此类工具: 还有: 百度一下文心一言app:探索人工智能的无限可能 在数字化浪潮中

    2024年04月12日
    浏览(56)
  • B树你需要了解一下

    B树(B-tree)是一种自平衡的树,能够保持数据有序,常被用于数据库和文件系统的实现。 B树可以看作是一般化的二叉查找树,它允许拥有多于2个子节点。与自平衡二叉查找树不同,B树为系统大块数据的读写操作进行了优化。B树减少定位记录时所经历的中间过程,从而加快

    2024年02月04日
    浏览(32)
  • 不再被 Git 用户名密码困扰,这里有你需要的解决方案

    当我们使用 git 时,经常需要查看或者修改自己的用户名和密码。但是,这个过程可能会遇到一些问题。今天,我们来探讨一下关于如何查看/修改 git 用户名密码的方法。 1.查看用户名 2.查看密码 3.查看邮箱 1.修改用户名 2.修改密码 3.修改邮箱 注意: 若在修改过程中报以下错

    2024年02月11日
    浏览(46)
  • 【MCSManager】服务器启动错误?看这里!

    看到这里的先同意说明一下,只是我以前遇到的问题作出的文章,实际已官方文档为准 错误代码如下: 这种情况一般出现在新手身上。那如何解决呢? 非常简单!,首先安装Java环境,从错误日志上可以看到是1.19.2,我们也就是需要安装jdk17 按照以下代码以此执行: 注意!注

    2024年02月02日
    浏览(35)
  • 想解锁禁用的iPhone?除了可以使用电脑之外,这里还有不需要电脑的方法!

    多次输入错误的密码后,iPhone将显示“iPhone已禁用”。这种情况看起来很棘手,因为你现在不能用iPhone做任何事情。对于这种情况,我们提供了几种有效的方法来帮助你在最棘手的问题中解锁禁用的iPhone。你可以选择使用或不使用电脑来解锁禁用的iPhone。 iPhone的屏幕密码保护

    2024年02月11日
    浏览(49)
  • 面试hrd需要注意什么,scikit-image 中用于图像分割的阈值算法,GitHub上标星13k的《Python面试突击版》

    thresh_otsu = threshold_otsu(gray_image) binary_otsu = gray_image thresh_otsu binary_otsu = img_as_ubyte(binary_otsu) thresh_niblack = threshold_niblack(gray_image, window_size=25, k=0.8) binary_niblack = gray_image thresh_niblack binary_niblack = img_as_ubyte(binary_niblack) thresh_sauvola = threshold_sauvola(gray_image, window_size=25) binary_sauvola = gra

    2024年04月25日
    浏览(34)
  • 和AI人工智能快乐玩耍,拿到文心一言内测,试验一下~

    问: ChatGPT和早先的人工智能概念有什么不同呢? ChatGPT: ChatGPT使用的是GPT-3.5等先进的人工智能技术,与早先的人工智能概念存在很大的不同。 早期的人工智能技术主要还是基于规则、逻辑推理、决策树、人工神经网络等方式,由程序员或专家知识库直接编写程序来完成各

    2024年02月09日
    浏览(54)
  • 用HarmonyOS元服务万能卡片训练一下文心一言的AIGC能力

    一、部分效果图展示 1.服务卡片 2.AIGC服务 二、平板与手机视频效果演示 1.平板视频,运行比较慢,需要耐心观看,之所以先用平板模拟器运行,是通过现在的DEMO方式手机文心一言网页版页面兼容性暂时没法解决,没法输入内容。 用HarmonyOS元服务万能卡片训练一下文心平板电

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包