python 之 面向对象 (异常处理)
7.15 异常处理
1、什么是异常 异常是错误发生的信号,程序一旦出错,如果程序中还没有相应的处理机制,那么该错误就会产生一个异常抛出来,程序的运行也随之终止
2、一个异常分为三部分: 异常的追踪信息 异常的类型 异常的值
3、异常的分类: 语法异常,逻辑上的异常
语法:
单分支
try:
print('start.....')
x=1
y
l=[]
l[3]
d={'a':1}
d['b']
print('end....')
except NameError:
print('变量名没有定义')
print('other.....') #start..... 变量名没有定义 other.....
多分支
try:
print('start.....')
x=1
# y
l=[]
l[3]
d={'a':1}
d['b']
print('end....')
except NameError:
print('变量名没有定义')
except KeyError:
print('字典的key不存在')
except IndexError:
print('索引超出列表的范围')
print('other.....') # start..... 索引超出列表的范围 other.....
多种异常采用同一段逻辑处理
try:
print('start.....')
x=1
# y
l=[]
# l[3]
d={'a':1}
d['b']
print('end....')
except (NameError,KeyError,IndexError):
print('变量名或者字典的key或者列表的索引有问题')
print('other.....') #start..... 变量名或者字典的key或者列表的索引有问题 other....
万能异常
try:
print('start.....')
x=1
# y
l=[]
# l[3]
d={'a':1}
# d['b']
import os
os.aaa
print('end....')
except Exception:
print('万能异常---》')
print('other.....') #start..... 万能异常---》other.....
获取异常的值
try:
print('start.....')
x=1
y
l=[]
l[3]
d={'a':1}
d['b']
import os
os.aaa
print('end....')
except Exception as e:
print('万能异常---》',e)
print('other.....')#start..... 万能异常---》 name 'y' is not defined other.....
7.151 try....else...
else: 不能单独使用,必须与except连用,意思是:else的子代码块会在被检测的代码没有出现过任何异常的情况下执行
try:
print('start.....')
# x=1
# # y
print('end....')
except NameError as e:
print('NameError: ',e)
except KeyError as e:
print('KeyError: ',e)
except Exception as e:
print('万能异常---》',e)
else:
print('在被检测的代码块没有出现任何异常的情况下执行')
print('other.....')#start..... end.... 在被检测的代码块没有出现任何异常的情况下执行 other.....
7.152 try...finally....
try:
print('start.....')
# x=1
# # y
print('end....')
except Exception as e:
print('万能异常---》',e)
finally:
print('无论有没有异常发生,都会执行')
print('other.....')#结果:start..... end.... 无论有没有异常发生,都会执行 other.....
#如果检测到异常:start.....
#万能异常---》 name 'y' is not defined
#无论有没有异常发生,都会执行 other.....
finally的子代码块中通常放回收系统资源的代码
try:
f=open('a.txt',mode='w',encoding='utf-8')
f.readline()
finally:
f.close()
print('other....') #报错 但文件关闭 (other....不执行)
7.153 主动触发异常
class People:
def __init__(self,name):
if not isinstance(name,str):
raise TypeError('%s 必须是str类型' %name)
self.name=name
p=People(123) # TypeError: 123 必须是str类型
断言
stus=[]
assert len(stus) > 0
print('part2.........')
print('part2.........') #AssertionError
自定义异常
class RegisterError(BaseException):
def __init__(self,msg,user):
self.msg=msg
self.user=user
def __str__(self):
return '<%s:%s>' %(self.user,self.msg)
raise RegisterError('注册失败','teacher') #__main__.RegisterError: <teacher:注册失败>
python 之 面向对象 (异常处理)的更多相关文章
- 第八章:Python基础の面向对象(二)
本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ...
- Pthon面向对象-异常处理
Pthon面向对象-异常处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.异常概述 1>.错误(Error) 逻辑错误: 算法写错了,例如加法写成了减法. 笔误: 例如 ...
- python基础——面向对象编程
python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- Python的面向对象3
接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法! 1.定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外 ...
- Python的面向对象2
我们接着讲解Python的面向对象 1.初始化实例属性 在现实生活中,一种类型的实例会具有相同的某些属性,把这些实例划分为一个类型,则这些实例必然有相似的部分.但是,在创建实例之后,我们一个一个的为实 ...
- Python的面向对象1
今天,我们来介绍Python的面向对象编程,其实面向对象并不陌生,在C++ ,Java ,PHP中也有大量使用! 好了,我们来步入正题! 那什么是面向对象编程呢? 1. 面向对象编程是一种程序设计 ...
- My way to Python - Day05 - 面向对象-思维导图
My way to Python - Day05 - 面向对象 思维导图
- Python 基础之 异常处理
python 基础之异常处理 说到异常处理,就得先问一下,什么是异常处理? 先来看一下,什么是异常? 异常就是:程序运行时发出的错误的信号. 异常的种类先来看一下: 一.常见的异常 Attribut ...
- Python基础---python中的异常处理
Python中的异常处理 一.什么是异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) ...
- Python进阶---面向对象的程序设计思想
Python的面向对象 一.面向过程与面向对象的对比 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...
随机推荐
- 7.学习springmvc的异常处理
一.页面的异常处理流程 二.建立项目springmvc04_exception 1.编写index.jsp页面: <%@ page contentType="text/html;cha ...
- 59: loj #10215
$des$ https://loj.ac/problem/10215 $sol$ exgcd检查 $code$ #include <iostream> #include <cstdl ...
- 数列的通项公式$a_n$的求法
前言 求数列的通项公式,其本质是求函数的解析式.重点理解内涵. 求解必备 你见到这样的式子\(a_{n+1}-a_n = m\) (\(m\)常数)你一定会反应出是等差数列,那么见到 \(S_{n+1 ...
- 您使用的私钥格式错误,请检查RSA私钥配置,charset = utf-8 密钥集不存在
支付宝突然报异常 您使用的私钥格式错误,请检查RSA私钥配置,charset = utf-8 经排查:系统日志 System.Security.Cryptography.CryptographicEx ...
- R语言中查询帮助
可以尝试下面的几种方式 help(lapply,package=,....)?lapply??lapplyhelp.search('lapply')apropos('norm') #函数名记不全时用? ...
- Eureka 的高级使用
基础架构Eureka架构中的三个核心角色: 服务注册中心 Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-demo 服务提供者 提供服务的应用,可以是SpringBo ...
- idea打包web项目
打包完成的文件在如下路径
- [Beta阶段]第五次Scrum Meeting
Scrum Meeting博客目录 [Beta阶段]第五次Scrum Meeting 基本信息 名称 时间 地点 时长 第五次Scrum Meeting 19/05/10 新主楼F座2楼 50min ...
- Gamma阶段第五次scrum meeting
每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...
- Video标签动态修改src地址播放问题
不管在React或Vue中,将一个变量赋值给src属性,当修改这个变量的值时,video播放的还是原来的视频. Vue中 <video id="root"> <s ...