python嵌套try...except如何使用详解

 更新时间:2022年08月16日 09:35:31   作者:youhebuke225  
有时候我们写程序的时候,会出现一些错误或异常,导致程序终止,使用try…except,这样程序就不会因为异常而中断,下面这篇文章主要给大家介绍了关于python嵌套try...except如何使用的相关资料,需要的朋友可以参考下

引言

众所周知,在python中我们用try…except…来捕获异常,使用raise来抛出异常,但是多重的try…except…是如何使用的呢

前提

抛出异常

当调用raise进行抛出错误的时候,抛出错误的后面的代码不执行

def func():
    print("hello")
    raise Exception("出现了错误")
    print("world")

func()

打印的错误堆栈

如果抓取错误,就相当于if...else,并不会打断代码的执行

def func():
    try:
        print("hello")
        raise Exception("出现了错误")
    except Exception as why:
        print(why)
        print("world")

func()

自定义异常

自定义异常需要我们继承异常的类,包括一些框架中的异常的类,我们自定义异常的话都需要继承他们

class MyError(Exception):
    pass

def say_hello(str):
    if str != "hello":
        raise MyError("传入的字符串不是hello")
    print("hello")

say_hello("world")

异常对象

  • Exception 是多有异常的父类,他会捕获所有的异常
  • 其后面会跟一个as as后面的变量就是异常对象,异常对象是异常类实例化后得到的

多重try

如果是嵌套的try...except...的话,这一层raise的错误,会被上一层的try...except...进行捕获

补充:捕获异常的小方法

方法一:捕获所有异常

a=10
b=0
try:
    print (a/b)
except Exception as e:
    print(Exception,":",e)
finally:
    print ("always excute")

运行:

<class 'Exception'> : division by zero
always excute

方法二:采用traceback模块查看异常

import traceback   
try:
    print ('here1:',5/2)
    print ('here2:',10/5)
    print ('here3:',10/0)
    
except Exception as e:
    traceback.print_exc()

运行:

here1: 2.5
here2: 2.0
Traceback (most recent call last):
  File "/Users/lilong/Desktop/online_release/try_except_use.py", line 59, in <module>
    print ('here3:',10/0)
ZeroDivisionError: division by zero

方法三:采用sys模块回溯最后的异常

import sys   
try:
    print ('here1:',5/2)
    print ('here2:',10/5)
    print ('here3:',10/0)
    
except Exception as e:
    info=sys.exc_info()  
    print (info[0],":",info[1])

运行:

here1: 2.5
here2: 2.0
<class 'ZeroDivisionError'> : division by zero

注意:万能异常Exception

被检测的代码块抛出的异常有多种可能性,并且我们针对所有的异常类型都只用一种处理逻辑就可以了,那就使用Exception,除非要对每一特殊异常进行特殊处理。

总结

到此这篇关于python嵌套try...except如何使用的文章就介绍到这了,更多相关python嵌套try...except使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现从线程获取返回值

    Python实现从线程获取返回值

    本文介绍了Python中线程的概念、创建线程的方法和在线程中获取函数返回值的技巧,线程作为进程中的执行单元,可以实现程序的并发运行,文章通过示例代码展示了如何在Python中使用Thread类创建线程,并讲解了在线程中传递参数和获取返回值的方法
    2024-09-09
  • 如何对csv文件数据分组,并用pyecharts展示

    如何对csv文件数据分组,并用pyecharts展示

    这篇文章主要介绍了如何对csv文件数据分组,并用pyecharts展示,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Numpy实现卷积神经网络(CNN)的示例

    Numpy实现卷积神经网络(CNN)的示例

    这篇文章主要介绍了Numpy实现卷积神经网络(CNN)的示例,帮助大家更好的理解和使用Numpy,感兴趣的朋友可以了解下
    2020-10-10
  • Python return函数返回值类型和帮助函数使用教程

    Python return函数返回值类型和帮助函数使用教程

    这篇文章主要为大家介绍了Python return函数返回值类型和帮助函数使用教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Tkinter 组件Scrollbar的具体使用

    Tkinter 组件Scrollbar的具体使用

    本文主要介绍了Tkinter 组件Scrollbar的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Python小白必备的8个最常用的内置函数(推荐)

    Python小白必备的8个最常用的内置函数(推荐)

    这篇文章主要介绍了Python常用的内置函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 一篇文章带你了解几个好用的Python技巧

    一篇文章带你了解几个好用的Python技巧

    这篇文章主要介绍了几个Python小技巧,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • Python入门之字典的使用教程

    Python入门之字典的使用教程

    Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。本文将为大家详细讲讲字典的使用教程,需要的可以参考一下
    2022-09-09
  • python 接口返回的json字符串实例

    python 接口返回的json字符串实例

    下面小编就为大家分享一篇python 接口返回的json字符串实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Python中scatter散点图及颜色整理大全

    Python中scatter散点图及颜色整理大全

    python自带的scatter函数参数中颜色和大小可以输入列表进行控制,即可以让不同的点有不同的颜色和大小,下面这篇文章主要给大家介绍了关于Python中scatter散点图及颜色整理大全的相关资料,需要的朋友可以参考下
    2023-05-05

最新评论