python 内存溢出能捕获吗_从0基础学习Python (19)[面向对象开发过程中的异常(捕获异常~相关)]...
从0基础学习Python (Day19)
面向对象开发过程中的=>异常
什么是异常
当程序在运行过程中出现的一些错误,或者语法逻辑出现问题,解释器此时无法继续正常执行了,反而出现了一些错误的提示,这就是异常(错误代码或者BUG)
程序出现异常的后果
程序在运行过程中出现了异常
轻则功能无法实现,或者功能运行结果出错
重则整个程序崩溃!!!!!
捕获异常
捕获异常是在编程中常用的一种处理代码中可能会出现漏洞的一些基础解决方案
捕获异常的方法
使用try—except语法
try:
#可能会出现异常的代码
except:
#如果try里面的哪行代码出现异常会直接跳到这里面执行代码
·这种捕获异常存在一个问题,只会捕获异常然后执行except中的处理代码,但是无法得知异常的问题
捕获指定异常
例:
print(a)
#执行会抛异常
#SyntaxError: invalid character in identifier
#在“:”之前叫异常类,之后叫异常信息
语法
try:
#可能会出现异常的代码
except 可能出现的异常类型:
#如果捕获到异常是指定的这个类型的执行代码
在使用捕获指定异常的时候一定要考虑所有有可能出现的异常类型,如果出现的异常不在所写出的“可能出现的异常类”之中,则会报错
注意
如果执行的代码的异常类型和要捕获的异常类型不一致则无法捕获异常
一般try下面只放一行尝试的代码
捕获多个指定异常
当在捕获异常的时候,可以把要捕获的异常类型的名字,放到except之后,并使用元祖的方式进行体现,或者采用多个except之后放上不同的异常类型的名字
异常类
异常类是指在Python内置的一些类,这些类代表了Python中的一些异常问题
异常名称
描述
BaseException
所有异常的基类
SystemExit
解释器请求退出
KeyboardInterrupt
用户中断执行(通常是输入^C)
Exception
常规错误的基类
StopIteration
迭代器没有更多的值
GeneratorExit
生成器(generator)发生异常来通知退出
SystemExit
Python 解释器请求退出
StandardError
所有的内建标准异常的基类
ArithmeticError
所有数值计算错误的基类
FloatingPointError
浮点计算错误
OverflowError
数值运算超出最大限制
ZeroDivisionError
除(或取模)零 (所有数据类型)
AssertionError
断言语句失败
AttributeError
对象没有这个属性
EOFError
没有内建输入,到达EOF 标记
EnvironmentError
操作系统错误的基类
IOError
输入/输出操作失败
OSError
操作系统错误
WindowsError
系统调用失败
ImportError
导入模块/对象失败
KeyboardInterrupt
用户中断执行(通常是输入^C)
LookupError
无效数据查询的基类
IndexError
序列中没有没有此索引(index)
KeyError
映射中没有这个键
MemoryError
内存溢出错误(对于Python 解释器不是致命的)
NameError
未声明/初始化对象 (没有属性)
UnboundLocalError
访问未初始化的本地变量
ReferenceError
弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError
一般的运行时错误
NotImplementedError
尚未实现的方法
SyntaxError
Python 语法错误
IndentationError
缩进错误
TabError
Tab 和空格混用
SystemError
一般的解释器系统错误
TypeError
对类型无效的操作
ValueError
传入无效的参数
UnicodeError
Unicode 相关的错误
UnicodeDecodeError
Unicode 解码时的错误
UnicodeEncodeError
Unicode 编码时错误
UnicodeTranslateError
Unicode 转换时错误
Warning
警告的基类
DeprecationWarning
关于被弃用的特征的警告
FutureWarning
关于构造将来语义会有改变的警告
OverflowWarning
旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning
关于特性将会被废弃的警告
RuntimeWarning
可疑的运行时行为(runtime behavior)的警告
SyntaxWarning
可疑的语法的警告
UserWarning
用户代码生成的警告
捕获异常描述信息
语法
try:
#可能会出现异常的代码
except (指定的异常类型1,指定的异常类型2,...) as 变量:
print(变量)
将捕获的区域中的代码出现的指定的异常问题的描述信息存放在变量中,然后输出
捕获所有异常
所有异常类的父类都是Exception类
语法
try:
#可能会出现异常的代码
except Exception as 变量:
print(变量)
异常的else
else表示的是如果没有捕获到异常则需要执行的代码
语法
try:
#可能会出现异常的代码
except (可能出现的异常类型1,可能出现的异常类型2)as 变量:
#如果捕获到异常是指定的这个类型的执行代码
print(变量)
else:
#如果没有捕获到异常则需要执行的代码
异常的finnally
finnally表示最终结果,不论代码是否捕获到异常(try中的代码执行之后不管是进入了except还是else)最终都要进入finnally执行
语法
try:
#可能会出现异常的代码
except (可能出现的异常类型1,可能出现的异常类型2)as 变量:
#如果捕获到异常是指定的这个类型的执行代码
print(变量)
else:
#如果没有捕获到异常则需要执行的代码
finnally:
#不论有无bug都执行这一行
异常的传递
可以理解为异常的嵌套:
# 计算1+100
import time
# 程序的时间线
def fun():
try:
res = 0
print("1"+2)
print(time.time())
# 0.0168831
try:
for i in range(1, 101):
res += i
print(res)
time
time.sleep(2)
except:
print("程序被意外终止1")
except:
print("程序被意外终止2")
finally:
print(time.time())
# 0.0178795
return res
print( fun())
自定义异常
在python中一般抛出的异常的语法是异常类对象,这些异常类对象是Python提前封装好的
语法
try:
raise
#用来引发异常,让执行except中的语句
except Exception as res:
#捕获到自定义异常执行代码
else:
#如果没有捕获到异常则需要执行的代码
finnally:
#不论有无bug都执行这一行
需求:检测一些数据例如年龄不能小于0(小于0抛异常)
class AgeInputError(Exception):
def __init__(self, age):
self.age = age
self.minage = 0
def __str__(self):
return f"你输入的年龄是{self.age},不能小于{self.minage}"
def main():
try:
age = int(input("请输入年龄:"))
if age < 0:
# raise 关键字是返回一个异常
raise AgeInputError(age)
except Exception as res:
print(res)
else:
print("年龄无误")
finally:
print("注册完成")
main()
注意:
python中的raise关键字用于引发一个异常,基本上作用和C#中或Java中的throw关键字相同
Day19-------END
python 内存溢出能捕获吗_从0基础学习Python (19)[面向对象开发过程中的异常(捕获异常~相关)]...相关推荐
- 从0基础学习Python(13)[面向对象思想]
从0基础学习Python (Day13) 面向对象思想 1.面向对象编程介绍 面向对象 概述 目前软件开发技术中两种主流思想:面向过程.面向对象 面向过程思想出现较早,C语言 面向对象思想 ...
- python 内存溢出能捕获吗_Python内存泄漏和内存溢出的解决方案
一.内存泄漏 像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题. 对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是 ...
- 适合零基础学python的书籍_适合零基础学习Python的书籍
Python 编程语言是容易学习且功能强大的语言,只要会用微信聊天.懂一点英文单词即可学会.另外,面对同样一个功能,其他编程语言的代码行数可能是几十行,甚至几百行,而Python 语言只要几行代码即可 ...
- python全栈开发什么意思_如何快速的学习Python全栈开发?这是腾讯大佬给你的建议!...
自2017年国务院印发<新一代人工智能发展规划>,明确指出在中小学阶段设置人工智能相关课程后,Python一路逆袭, 作为人工智能时代最合适的语言,Python无疑被越来越多人追捧,被众多 ...
- 适合0基础学习Python的路线图
我自己是28岁转行后自学Python的,所以根据自己过去的经验总结一下.总结了一个自学 Python 的路线, 面对新手可能有以下问题 我想学习Python但不知道从哪里开始. 我不知道能不能学得好 ...
- python list转string_【幼儿园级】0基础学python一本通(上)——AI未来系列1
在未来面前,每个人都是学生 江海升月明,天涯共此时,关注江时! 引 子 本篇为AI未来系列第一篇.为什么要研究学习python?python是未来屠龙的屠龙宝刀,再辅助以我们的高中数学基础(足够用的屠 ...
- python网上有免费资源吗_【转载】学习Python无从下手?最好的免费资源想要拿走...
Python 可以用来做什么? 在我看来,基本上可以不负责任地认为,Python 可以做任何事情.无论是从入门级选手到专业级选手都在做的爬虫,还是Web 程序开发.桌面程序开发还是科学计算.图像处理, ...
- python网络编程要学吗_总算发现如何学习python网络编程
为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...
- 0基础学习Python基础语法(0)-print()与变量
文章目录 Python[人工智能]时代的立身武器 print 无引号 单引号的用法 双引号的用法 三引号的用法 转义字符 变量和赋值 变量的命名规范 下关预告 Demo 例子:打印 例子:转义字符 要 ...
最新文章
- 解析Linux操作系统文件目录
- 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第8章-二阶连续时间多智能体系统加权一致性
- Delphi 2010 新增功能之: 软键盘、触摸键盘(TTouchKeyboard)
- linux case if for语法
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能 (转)
- linux 判断网卡是否异常_如何判断linux网卡故障?
- IntelliJ IDEA优秀插件(编程通用)
- 利用Adorner制作用于图像裁切的选择框
- mysql连接查询优点_1105 ROM优缺点,MySQL连接类,查插更方法
- Module build failed: Error: Couldn't find preset react relative to directory
- Eclipse连接SQLServer2008
- java编写时间流逝_如何测量Java中的时间流逝?
- pandas使用速查表
- 【NVMe2.0b 7】NVMe 基本队列数据结构
- Sieve of Eratosthenes(埃拉托色尼筛选法)——C++实现
- 【实用软件】Json文件查看器(支持查看超大JSON文件)
- Revit一款主要用于进行建筑信息建模的软件
- html5 indexeddb,关于使用HTML5提供的indexedDB的一下心得
- 1104. Path In Zigzag Labelled Binary Tree**
- 文本话题聚类(Kmeans/LDA)