python嵌套try...except如何使用详解
作者:youhebuke225 发布时间:2022-06-21 16:53:00
引言
众所周知,在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,除非要对每一特殊异常进行特殊处理。
来源:https://blog.csdn.net/youhebuke225/article/details/124365365
猜你喜欢
- 1 前言Python开发网络爬虫获取网页数据的基本流程为:发起请求通过URL向服务器发起request请求,请求可以包含额外的header信
- 上篇文章介绍了什么是进程、进程与程序的关系、进程的创建与使用、创建进程池等,接下来就来介绍一下进程同步及进程通信。进程同步当多个进程使用同一
- write()方法把字符串str写入文件。没有返回值。由于缓冲,字符串可能不实际显示文件,直到flush()或close()方法
- anaconda用法:查看已经安装的包:pip list 或者 conda list安装和更新:pip install requestspi
- 引用类型(Reference)在许多计算机语言中都被使用,而且是作为一个非常强大而实用的特性存在。它有类似指针(Pointer)的实现,却又
- 查了很多很多的资料无果,果然知乎牛逼,完美解决。爬取网站时,最终得到list内容,编码为unicode,想让其转换为汉字并输出。需要提取的为
- 目标在本章中,将学习"Harris Corner Detection”背后的思想函数:cv2.cornerHa
- 从学习Python至今,发现很多时候是将Python作为一种工具。特别在文本处理方面,使用起来更是游刃有余。说到文本处理,那么正则表达式必然
- python通过安装使用paramiko模块,将本地文件上传到服务器上import paramikoimport datetimeimpor
- 目录urllib库urllib.request模块Request对象1 . 请求头添加2. 操作cookie3. 设置代理urllib.pa
- 【数据库模型类】class ConColumn(db.Model): __tablename__='con
- 制作一个查看器可以查看豆瓣前100名电影的信息,当然这个爬取信息比较简单。所以重点放在 QThread 多线程的应用上面。QThread 子
- 最近由于要毕业了写论文做毕设,然后还在实习发现已经好久都没有写博客了。今天由于工作需求,需要用Django实现单用户登录。大概意思就是跟QQ
- 二是什么时候CPU是空闲的?空闲是一个相对的标准。有时会CPU使用率30%以下可以定义为空闲;而有时候CPU使用率只有不到60%,就是空闲。
- 1.前言 &n
- 本文为大家分享了python2.7+selenium2实现淘宝滑块自动认证的具体代码,供大家参考,具体内容如下1.编译环境 操作系统:win
- Javascript脚本获取form和input内容的方法随着js的发展,许多的网页数据处理完全可以由js脚本解决,而不需要发送到服务器这里
- Pandas Shift函数基础在使用Pandas的过程中,有时会遇到shift函数,今天就一起来彻底学习下。先来看看帮助文档是怎么说的:&
- 配合上一篇文章的联系人应用(https://www.aspxhome.com/article/161160.htm),实现配套的基于node
- 出自:【孟宪会之精彩世界】 发布日期:2005年1月27日 8点48分0秒 [有删改] 由于某些原