python中异常栈跟踪与异常利用

简介: python中异常栈跟踪与异常利用

知识回顾:



异常类型结构:

try:

pass

except:

pass

else:

pass

finally:

pass

异常中,必须要有的try关键词,后接上except或者else


一、异常栈的跟踪



栈的特点:先进后出

异常的抛出,如果内部的异常没有被进行处理,那么会从最内部一个慢慢往外部传递异常。

如果内部的异常已经被捕获且处理,那么内部的异常就不会进行传递了。


二、异常利用



我们在使用字典的时候,往往可能会出现调用的字典的关键词并不存在的情况,那么直接就会报错了。我们以前会使用if语句进行处理,来判断每一个关键词在调用之前,是否存在的判断。


注意:python中大小写是敏感的,要注意调用的时候,大小写的正确性。


1.判断键是否存在

原有判断字典键值的方式,防止程序异常

#调用字典输出,直接使用if语句进行判断

if "aa" in dic1:

   print(dic1["aa"])

else:

   print("关键词不存在")


利用异常捕获,来简化代码。

try:

   print(dic1["aa"])

   print(dic1["BB"])

except KeyError:

   print("关键词不存在,抛出异常")


2.判断类方法是否存在

类的异常利用,老的模式下的类的属性是否存在的判断

mc=MyClass()

if(hasattr(MyClass,"abc")):

   mc.abc()

else:

   print("属性不存在")


新式的类属性调用的判断

采用异常捕获的情况来进行

try:

   mc.abc()

   mc.defd()

except:

   print("属性方法不存在")


三、总结强调



1.掌握异常栈的跟踪。

2.掌握异常的利用,来优化代码,排除未知异常。

3.掌握try捕获异常的基本形式。

4.所有异常捕获后,抛出的异常,都是异常对象。

相关文章
|
7天前
|
存储 索引 Python
|
8天前
|
Python
Python生成器、装饰器、异常
【10月更文挑战第15天】
|
27天前
|
存储 缓存 Java
深度解密 Python 虚拟机的执行环境:栈帧对象
深度解密 Python 虚拟机的执行环境:栈帧对象
56 13
|
19天前
|
设计模式 安全 JavaScript
Python学习八:面向对象编程(下):异常、私有等
这篇文章详细介绍了Python面向对象编程中的私有属性、私有方法、异常处理及动态添加属性和方法等关键概念。
17 1
|
2月前
|
人工智能 数据可视化 搜索推荐
Python异常模块与包
Python异常模块与包
|
26天前
|
开发者 索引 Python
Python常见的异常总结
Python 中的异常是一个非常广泛的主题,因为它包含许多内置的异常类型,这些类型可以处理各种运行时错误。
18 0
|
4月前
|
数据采集 存储 Java
如何让Python爬虫在遇到异常时继续运行
构建健壮Python爬虫涉及异常处理、代理IP和多线程。通过try/except捕获异常,保证程序在遇到问题时能继续运行。使用代理IP(如亿牛云)防止被目标网站封锁,多线程提升抓取效率。示例代码展示了如何配置代理,设置User-Agent,以及使用SQLite存储数据。通过`fetch_url`函数和`ThreadPoolExecutor`实现抓取与重试机制。
如何让Python爬虫在遇到异常时继续运行
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 30. 包含min函数的栈
本文提供了实现一个包含min函数的栈的Python代码,确保min、push和pop操作的时间复杂度为O(1)。
24 4
|
3月前
|
Python
【Leetcode刷题Python】946. 验证栈序列
LeetCode题目“946. 验证栈序列”的Python解决方案,通过模拟栈的压入和弹出操作来验证给定的两个序列是否能通过合法的栈操作得到。
25 6
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 09. 用两个栈实现队列
使用两个栈实现队列的Python解决方案,包括初始化两个栈、实现在队列尾部添加整数的appendTail方法和在队列头部删除整数的deleteHead方法,以及相应的示例操作。
38 2