iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么避免滥用try...except
  • 567
分享到

Python中怎么避免滥用try...except

2023-06-16 12:06:35 567人浏览 薄情痞子

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

摘要

这篇文章主要讲解了“python中怎么避免滥用try...except”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中怎么避免滥用try...except”吧!有不少人在写 Py

这篇文章主要讲解了“python中怎么避免滥用try...except”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中怎么避免滥用try...except”吧!

有不少人在写 Python 代码时,喜欢用 try...except Exception,更有甚者一层套一层,不管有没有用,先套了再说:

鸿蒙官方战略合作共建——HarmonyOS技术社区ss="dp-xml">ss="alt">def func(): ss="">    try: ss="alt">        "函数内部代码" ss="">    except Exception as e: ss="alt">        print('函数错误:', e) ss=""> ss="alt"> ss="">try: ss="alt">    func() ss="">except Exception as e: ss="alt">    print('函数错误:', e)

根本不管是否有必要,总之套上了try...except...就有了安全感。

俄罗斯套娃套多了以后,噩梦开始了。我们来看看下面这段报错:

Python中怎么避免滥用try...except

你倒是给我说说,是哪个函数出了问题?

如果你饱受滥用try...except...之苦,下面三个方法可以让你脱离苦海。

把问题暴露出来

在程序开发的初期,不要用try...except...。让 Python 把问题暴露出来。通过 Python  的报错,你可以直接看到是哪一行代码有问题,具体是什么问题。

甚至有时候,不仅不需要捕获异常,你还应该主动抛出异常。在项目完成以后,如果你做的是一个第三方库,是用来给别人调用的,那么,你应该多抛出异常,而不是擅自返回一个普通的错误信息。

例如,你要实现一个函数:query_name,传入参数是数字 id,输出用户名。你可能会这样写:

鸿蒙官方战略合作共建——HarmonyOS技术社区ss="dp-xml">ss="alt">def query_name(user_id): ss="">    if not isinstance(user_id, int): ss="alt">        return {'success': False, 'msg': '用户 id 必须是整型'} ss="">    ...

但实际上,更好的做法是,直接抛出一个异常:

鸿蒙官方战略合作共建——HarmonyOS技术社区ss="dp-xml">ss="alt">def query_name(user_id): ss="">    if not isinstance(user_id, int): ss="alt">        raise Exception('用户 id 必须是整型'} ss="">    ...

甚至在某些情况下,你可以使用 Python 的断言:

鸿蒙官方战略合作共建——HarmonyOS技术社区ss="dp-xml">ss="alt">def query_name(user_id): ss="">    assert isinstance(user_id, int), '用户 id 必须是整型' ss="alt">    ...

如下图所示:

Python中怎么避免滥用try...except

只要 user_id不是整型,就抛出AssertionError。

我们直接执行python3 xxx.py时,这些断言语句会正常工作。但我们可以通过python3 -o xxx.py来让所有assert  xxx语句失效。

尽量早地让异常暴露出来,才能更早地解决问题。

捕获具体异常而不是所有异常

只捕获你明确知道的异常。这些异常你知道它为什么会出现,并且你知道应该怎么解决它。

例如,我们使用requests请求网站,由于网络问题,有时候可能会请求超时。一旦超时 requests 就会抛出超时异常,如下图所示:

Python中怎么避免滥用try...except

这种情况下,你知道这个地方可能会出现Timeout异常,并且你知道出现的时候,重试就可以了。于是,你可以捕获这个异常:

Python中怎么避免滥用try...except

大家注意,在这个地方,requests 执行了.JSON()方法。如果URL 返回的内容可能不是 jsON  格式的字符串,这里就会报JSONDecodeError,如下图所示:

Python中怎么避免滥用try...except

如果你不做区分,一股脑直接用 except  Exception,那么你怎么知道,到底是你能够正常处理的超时问题,还是你不能正常处理的网站内容返回异常?

所以,只捕获你知道它为什么会发生并且你知道如何处理的异常。对于你无法预料的或者无法处理的异常,直接抛出。不要擅自捕获。

强行打印报错信息

如果实在是万不得已,你必须用try...except Exception,如何把具体报错的位置打印出来呢?其实也是有方法的。那就是使用  Python 自带的traceback模块。

它的用法非常简单:

鸿蒙官方战略合作共建——HarmonyOS技术社区ss="dp-xml">ss="alt">import traceback ss=""> ss="alt">try: ss="">    1 + 'a' ss="alt">except Exception: ss="">    print(traceback.fORMat_exc())

运行效果如下图所示:

Python中怎么避免滥用try...except

成功把异常所在的行数和具体的错误类型打印了出来。显然,这样写你需要平白无故多写很多代码。

感谢各位的阅读,以上就是“Python中怎么避免滥用try...except”的内容了,经过本文的学习后,相信大家对Python中怎么避免滥用try...except这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Python中怎么避免滥用try...except

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

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

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

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

下载Word文档
猜你喜欢
  • Python中怎么避免滥用try...except
    这篇文章主要讲解了“Python中怎么避免滥用try...except”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中怎么避免滥用try...except”吧!有不少人在写 Py...
    99+
    2023-06-16
  • python中try...except的用法
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • python中try-except-finally语句怎么使用
    本文小编为大家详细介绍“python中try-except-finally语句怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“python中try-except-finally语句怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-06-30
  • python try-except怎么捕获异常
    这篇文章主要介绍“python try-except怎么捕获异常”,在日常操作中,相信很多人在python try-except怎么捕获异常问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python try-...
    99+
    2023-06-30
  • try-except-finally语句怎么在python中使用
    这期内容当中小编将会给大家带来有关try-except-finally语句怎么在python中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java...
    99+
    2023-06-14
  • 怎么在python中使用try-except方法捕获异常
    这篇文章给大家介绍怎么在python中使用try-except方法捕获异常,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;...
    99+
    2023-06-14
  • Python中用try-except-finally处理异常问题
    目录Python用try-except-finally处理异常作用意义结构执行流程Python的try…except…finally语句举个例子总结Pyt...
    99+
    2022-12-20
    Python try-except-finally try-except-finally处理异常 Python处理异常
  • python中try-except-else的工作原理是什么
    python中try-except-else的工作原理是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python有哪些常用库python常用的库:1.requesuts;...
    99+
    2023-06-14
  • 如何在python中使用try-except方法处理异常
    这篇文章给大家介绍如何在python中使用try-except方法处理异常,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;...
    99+
    2023-06-14
  • Vue中避免滥用this去读取data中数据的方法是什么
    这篇文章主要讲解了“Vue中避免滥用this去读取data中数据的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue中避免滥用this去读取da...
    99+
    2024-04-02
  • 怎么在python中避免KeyError异常
    这篇文章将为大家详细讲解有关怎么在python中避免KeyError异常,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python可以做什么Python是一种编程语言,内置了许多有效的工具,...
    99+
    2023-06-14
  • Java中怎么避免OOM
    Java中怎么避免OOM,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一.了解 强引用、软引用、弱引用、虚引用的概念在Java中,虽然不需要程序员手动去管理对象...
    99+
    2023-06-17
  • Python中的try excpet BaseException怎么使用
    这篇文章主要介绍“Python中的try excpet BaseException怎么使用”,在日常操作中,相信很多人在Python中的try excpet BaseException怎么使用问题上存...
    99+
    2023-07-05
  • SQLServer中exists和except怎么使用
    这篇文章主要介绍“SQLServer中exists和except怎么使用”,在日常操作中,相信很多人在SQLServer中exists和except怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL...
    99+
    2023-06-21
  • Java中怎么避免反模式
    本篇文章给大家分享的是有关Java中怎么避免反模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用接口,如:12345package one;public interface...
    99+
    2023-06-17
  • Java中怎么避免sql注入
    小编给大家分享一下Java中怎么避免sql注入,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言sql注入是web开发中最常见的一种安全漏洞。可以用它来从数据库获...
    99+
    2023-06-26
  • 怎么在Java中避免死锁
    这篇文章给大家介绍怎么在Java中避免死锁,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员以优雅的思维...
    99+
    2023-06-14
  • 怎么在python中使用except对异常进行处理
    本篇文章为大家展示了怎么在python中使用except对异常进行处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scra...
    99+
    2023-06-14
  • DDD中怎么避免过度设计
    这篇文章主要介绍了DDD中怎么避免过度设计,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。DDD即领域驱动设计,是一种建模方法论,强调通过分析...
    99+
    2024-04-02
  • Nginx中怎么避免传统缓存
    今天就跟大家聊聊有关Nginx中怎么避免传统缓存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、传统缓存之一(404)这个办法是把Nginx缓存的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作