从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)[面向对象开发过程中的异常(捕获异常~相关)]...相关推荐

  1. 从0基础学习Python(13)[面向对象思想]

    从0基础学习Python (Day13) 面向对象思想 1.面向对象编程介绍 面向对象 概述 ​ 目前软件开发技术中两种主流思想:面向过程.面向对象 ​ 面向过程思想出现较早,C语言 ​ 面向对象思想 ...

  2. python 内存溢出能捕获吗_Python内存泄漏和内存溢出的解决方案

    一.内存泄漏 像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题. 对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是 ...

  3. 适合零基础学python的书籍_适合零基础学习Python的书籍

    Python 编程语言是容易学习且功能强大的语言,只要会用微信聊天.懂一点英文单词即可学会.另外,面对同样一个功能,其他编程语言的代码行数可能是几十行,甚至几百行,而Python 语言只要几行代码即可 ...

  4. python全栈开发什么意思_如何快速的学习Python全栈开发?这是腾讯大佬给你的建议!...

    自2017年国务院印发<新一代人工智能发展规划>,明确指出在中小学阶段设置人工智能相关课程后,Python一路逆袭, 作为人工智能时代最合适的语言,Python无疑被越来越多人追捧,被众多 ...

  5. 适合0基础学习Python的路线图

    我自己是28岁转行后自学Python的,所以根据自己过去的经验总结一下.总结了一个自学 Python 的路线, 面对新手可能有以下问题 我想学习Python但不知道从哪里开始. 我不知道能不能学得好 ...

  6. python list转string_【幼儿园级】0基础学python一本通(上)——AI未来系列1

    在未来面前,每个人都是学生 江海升月明,天涯共此时,关注江时! 引 子 本篇为AI未来系列第一篇.为什么要研究学习python?python是未来屠龙的屠龙宝刀,再辅助以我们的高中数学基础(足够用的屠 ...

  7. python网上有免费资源吗_【转载】学习Python无从下手?最好的免费资源想要拿走...

    Python 可以用来做什么? 在我看来,基本上可以不负责任地认为,Python 可以做任何事情.无论是从入门级选手到专业级选手都在做的爬虫,还是Web 程序开发.桌面程序开发还是科学计算.图像处理, ...

  8. python网络编程要学吗_总算发现如何学习python网络编程

    为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...

  9. 0基础学习Python基础语法(0)-print()与变量

    文章目录 Python[人工智能]时代的立身武器 print 无引号 单引号的用法 双引号的用法 三引号的用法 转义字符 变量和赋值 变量的命名规范 下关预告 Demo 例子:打印 例子:转义字符 要 ...

最新文章

  1. 解析Linux操作系统文件目录
  2. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第8章-二阶连续时间多智能体系统加权一致性
  3. Delphi 2010 新增功能之: 软键盘、触摸键盘(TTouchKeyboard)
  4. linux case if for语法
  5. Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能 (转)
  6. linux 判断网卡是否异常_如何判断linux网卡故障?
  7. IntelliJ IDEA优秀插件(编程通用)
  8. 利用Adorner制作用于图像裁切的选择框
  9. mysql连接查询优点_1105 ROM优缺点,MySQL连接类,查插更方法
  10. Module build failed: Error: Couldn't find preset react relative to directory
  11. Eclipse连接SQLServer2008
  12. java编写时间流逝_如何测量Java中的时间流逝?
  13. pandas使用速查表
  14. 【NVMe2.0b 7】NVMe 基本队列数据结构
  15. Sieve of Eratosthenes(埃拉托色尼筛选法)——C++实现
  16. 【实用软件】Json文件查看器(支持查看超大JSON文件)
  17. Revit一款主要用于进行建筑信息建模的软件
  18. html5 indexeddb,关于使用HTML5提供的indexedDB的一下心得
  19. 1104. Path In Zigzag Labelled Binary Tree**
  20. 文本话题聚类(Kmeans/LDA)

热门文章

  1. 用Go语言建立一个简单的区块链part3:持久化和命令行接口
  2. 一致性算法 - Raft
  3. 【模拟】P1563 玩具谜题
  4. Re题目------Enm.exe
  5. 研究.jpg图片马赛克问题
  6. 2020-10-30(smali复杂类解析)
  7. 「安全技术」针对常见混淆技术的反制措施
  8. C++使用类静态成员跟踪对象的个数
  9. 【PAT乙级】1071 小赌怡情 (15 分)
  10. MySQL读写分离应用层解决