脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python嵌套try...except如何使用详解

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

2022-08-16 12:13youhebuke225 Python

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

引言

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

前提

抛出异常

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

?
1
2
3
4
5
6
def func():
    print("hello")
    raise Exception("出现了错误")
    print("world")
 
func()

打印的错误堆栈

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

?
1
2
3
4
5
6
7
8
9
def func():
    try:
        print("hello")
        raise Exception("出现了错误")
    except Exception as why:
        print(why)
        print("world")
 
func()

自定义异常

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

?
1
2
3
4
5
6
7
8
9
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...进行捕获

补充:捕获异常的小方法

方法一:捕获所有异常

?
1
2
3
4
5
6
7
8
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模块查看异常

?
1
2
3
4
5
6
7
8
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模块回溯最后的异常

?
1
2
3
4
5
6
7
8
9
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使用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/youhebuke225/article/details/124365365

延伸 · 阅读

精彩推荐
  • PythonPandas.DataFrame转置的实现

    Pandas.DataFrame转置的实现

    这篇文章主要介绍了Pandas.DataFrame转置的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着...

    肥宅_Sean10292021-09-18
  • Python对Python强大的可变参数传递机制详解

    对Python强大的可变参数传递机制详解

    今天小编就为大家分享一篇对Python强大的可变参数传递机制详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    LisPythoniC11472021-07-11
  • PythonPython后台开发Django会话控制的实现

    Python后台开发Django会话控制的实现

    这篇文章主要介绍了Python后台开发Django会话控制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    东小东7912021-06-17
  • Python简单介绍Python的Django框架加载模板的方式

    简单介绍Python的Django框架加载模板的方式

    这篇文章主要介绍了Python的Django框架加载模板的方式,包括一些对加载顺序的介绍,需要的朋友可以参考下...

    Python教程网2702020-07-25
  • Pythonpython web自制框架之接受url传递过来的参数实例

    python web自制框架之接受url传递过来的参数实例

    今天小编就为大家分享一篇python web自制框架之接受url传递过来的参数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    lowphper4302021-04-30
  • PythonPython多进程multiprocessing用法实例分析

    Python多进程multiprocessing用法实例分析

    这篇文章主要介绍了Python多进程multiprocessing用法,结合实例形式分析了Python多线程的概念以及进程的创建、守护进程、终止、退出进程、进程间消息传递等相...

    水·域2442020-12-02
  • Pythonpython实现RSA加密(解密)算法

    python实现RSA加密(解密)算法

    RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准,下面通过本文给大家介绍python实...

    脚本之家8312020-08-12
  • PythonPython实现求两个数组交集的方法示例

    Python实现求两个数组交集的方法示例

    这篇文章主要介绍了Python实现求两个数组交集的方法,涉及Python数组遍历、排序、判断、追加等相关操作技巧,需要的朋友可以参考下...

    linfeng88610322021-06-01