Python全栈-异常处理
一、异常
1.异常的定义
异常是错误发生的信号,程序一旦出错就会抛出错误信息,如果不及时处理就会程序就会随之停止运行
异常有三部分组成:
1)异常类型
2)异常追踪
3)异常的值.png)
2.异常的分类
1)语法错误
无法通过Python解释器解释的语法
2)逻辑错误
3.异常的种类
AttributeError 访问一个对象不存在的属性
IOError 输入/输出异常,例如无法打开文件
ImportError 无法引入模块或包,通常是路径问题或名称错误
IndentationError 语法错误(的子类),代码缩进错误
IndexError 下标索引超出序列边界
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能编译,例如语法错误
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的
二、异常处理
1.语法
try:
# 代码块
except (错误类型1, ...):
# 代码块
1)单分支
try:
print('start...')
s = 1
y
l = []
l[2]
print('end...')
except NameError:
print('变量名没有赋值') # 输出结果
start...
变量名没有赋值
2)多分支
try:
print('start...')
s = 1
# y
l=[]
l[2]
print('end...')
except NameError:
print('变量名没有赋值')
except IndexError:
print('索引不存在')
# 输出结果
start...
索引不存在
3)多种异常处理同一段逻辑处理
try:
print('start...')
s = 1
# y
l=[]
l[2]
print('end...')
except (NameError,IndexError):
print('一行匹配多个错误')
4)万能异常
try:
print('start...')
s = 1
# y
l=[]
l[2]
print('end...')
except Exception as e:
print('万能异常匹配')
else:
print('不存在异常的时候才被执行')
finally:
print('有无异常都被执行')
5)获取异常值
6)try...else...(else必须与except组合使用)
else只有在被监测的代码不存在异常时才会被执行
7)try...finally...
finally无论被监测的代码是否存在异常时都会被执行
# finally的子代码块中通常放回收系统资源的代码
try:
f=open('f.txt','w',encoding='utf-8')
f.readline()
except Exception as e:
print(e)
finally:
f.close()
2.主动触发异常
raise 异常类型('.....')
3.断言
assret 条件
4.自定义异常处理
class RegisterError(BaseException):
def __init__(self,user,msg):
self.msg = msg
self.user = user
def __str__(self):
return '<user:%s %s >' % (self.user,self.msg)
raise RegisterError('zhang','登录失败')
5.异常处理使用的场景
为确保程序的可读性,应尽量少用
Python全栈-异常处理的更多相关文章
- Python全栈【异常处理】
Python全栈[异常处理] 本节内容: 1.异常处理 2.什么时候用异常处理 异常处理 1.异常处理: 异常就是程序运行时发生错误的信号,异常处理是在编程过程中为了增加友好性,在程序出现bug时一般 ...
- Python全栈之路目录结构
基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...
- 战争热诚的python全栈开发之路
从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...
- python全栈开发从入门到放弃之迭代器生成器
1.python中的for循环 l = [1,2,3,4,5,6] for i in l: #根据索引取值 print(i) 输出结果: 1 2 3 4 5 6 2.iterable 可迭代的 可迭 ...
- 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】
点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...
- python 全栈之路
目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文 ...
- python全栈学习路线
python全栈学习路线-查询笔记 查询目录 一,硬件 十一,数据 ...
- Python全栈【Socket网络编程】
Python全栈[socket网络编程] 本章内容: Socket 基于TCP的套接字 基于UDP的套接字 TCP粘包 SocketServer 模块(ThreadingTCPServer源码剖析) ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
随机推荐
- [daily][grub2] grub2修改内核选项
以前, 我们就直接去修改 /boot/grub/grub.cfg 文件了. 其实这并不正确. 正确的做法是: 1. 修改 /etc/default/grub 文件. [root@dpdk ~]# c ...
- Pytorch安装教程
一.准备 Window10系统+Ubuntu16.10系统.Anaconda3.5(python3.6) 二.流程 (1)由于墙的问题,用conda安装Pytorch过程中会连接失败,这是因为Anac ...
- JMeter之http接口测试
能做哪些类型性能测试 接口 文件传输(ftp) 数据库 支持自定义java组件开发 安装 http://jmeter.apache.org/ 进入上面的链接 选择合适版本下载 启动 使用 Jmeter ...
- 1、python接口测试requests
import requestsimport jsonr=requests.get('http://www.baidu.com') #get 请求方式r=r ...
- TZOJ 3198: 区间和
描述 给定n个数据,有两个操作,加减其中的一个数据,当然还可查询在某段数据的和. 输入 输入数据有多组,每组数据的第一行输入n,1=<n<=500000,代表数据的个数.第二行输入具体数据 ...
- 前端 HTML body标签相关内容 常用标签 标题标签 h1-h6
标题标签 h1~h6 <h1> - <h6> 标签可定义标题.<h1> 定义最大的标题.<h6> 定义最小的标题. 由于 h 元素拥有确切的语义,因此请 ...
- [phomeflashpic]怎样调用帝国CMS图片幻灯效果
今天改网站时试着用帝国cms的[phomeflashpic]标签调用图片作为首页幻灯片,默认是[phomeflashpic]0,3,300,235,0,0,13,3[/phomeflashpic],其 ...
- 关于ARMv8另外几个问题
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27510675 问题1:支持ARMv ...
- mysql mpm
mysql mpm 参考文章 http://www.myexception.cn/mysql/1968274.html http://www.linuxidc.com/Linux/2013-07/86 ...
- pandas操作速查表
准备工作 import numpy as np import pandas as pd 倒入文件或创建一个数据表 df = pd.DataFrame(pd.read_csv('name.csv',he ...