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
猜你喜欢
- **将Python程序(.py)转换为Windows可执行文件(.exe)第一步:安装pyinstaller打开cmd,输入 pip ins
- 本文实例总结了PHP常用字符串操作函数。分享给大家供大家参考,具体如下:/*常用的字符串输出函数** echo() 输出字符串* print
- 如何制作一个股票滚屏显示面板?<html> <head> <script
- 前一段时间,一个流行的东方系列mv 《bad apple》 带来一股奇怪的风潮: 各种技术狂人纷纷把这段mv在一些匪夷
- 对象Python 中,一切皆对象。每个对象由:标识(identity)、类型(type)、value(值)组成。1. 标识用于唯一标识对象,
- 1 发送文本信息'''加密发送文本邮件'''def sendEmail(from_addr,
- 隐患一:如果客户端机器的cookie一旦因病毒而失效了,那么session也就相当于没有了。 隐患二:session在php中默认的是以文件
- 批量生成word文件场景:需要新建多个类似文件名比如:今天的事例是新建12个文件名为:保安员考试试卷1及答案.docx保安员考试试卷2及答案
- 本文实例讲述了Python科学计算包numpy用法。分享给大家供大家参考,具体如下:1 数据结构numpy使用一种称为ndarray的类似M
- 使用场景已搭建了PyPI私有库,上传公共库包含静态文件,如需要使用sql静态文件初始化数据库。打包python包,给其他人使用,但项目中包含
- 主题的修改:File -> Settings ,弹出的窗口中: Appearance & Behavior -> App
- 本文实例讲述了Python面向对象之类的内置attr属性。分享给大家供大家参考,具体如下:这个比较简单。代码示例:# -*- coding:
- max(iterable, *[, key, default])max(arg1, arg2, *args[, key])函数功能为取传入的
- Cookie用于服务器实现会话,用户登录及相关功能时进行状态管理。要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下
- 1. 开始前本程序基于tkinter生成GUI,使用前请确保已经安装好tkinter对于windows用户,您可能已经安装了tkinter,
- 之前遇到技术问题总能在技术博客上得到启发,十分感谢各位的无私分享。而自己却很少发文,固然是水平有限,但也限制了知识积累和总结。今后多总结分享
- 目录一、Python 异常处理:错误与异常1、什么是错误?2、什么是异常?二、如何使用 Try-Except 处理异常?1、什么是 Try-
- 从AspJpeg1.8 版本开始,AspJpeg 提供了比 PrintText 更为灵活的文本绘图方法PrintTextEx,PrintTe
- 一、什么是Anaconda?Anaconda,中文是大蟒蛇,是一个开源的Anaconda是专注于数据分析的Python发行版本,包含了con
- 前不久,ColourLovers.com公布了一项调查结果。他们发现,美国前100大网站的Logo,主要使用12种颜色。其中,采用蓝色的网站