一、异常

1.异常的定义

  异常是错误发生的信号,程序一旦出错就会抛出错误信息,如果不及时处理就会程序就会随之停止运行

  异常有三部分组成:

    1)异常类型

  2)异常追踪

  3)异常的值

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全栈-异常处理的更多相关文章

  1. Python全栈【异常处理】

    Python全栈[异常处理] 本节内容: 1.异常处理 2.什么时候用异常处理 异常处理 1.异常处理: 异常就是程序运行时发生错误的信号,异常处理是在编程过程中为了增加友好性,在程序出现bug时一般 ...

  2. Python全栈之路目录结构

    基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...

  3. 战争热诚的python全栈开发之路

    从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...

  4. 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  可迭代的 可迭 ...

  5. 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】

    点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...

  6. python 全栈之路

    目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文 ...

  7. python全栈学习路线

    python全栈学习路线-查询笔记 查询目录 一,硬件                                                                    十一,数据 ...

  8. Python全栈【Socket网络编程】

    Python全栈[socket网络编程] 本章内容: Socket 基于TCP的套接字 基于UDP的套接字 TCP粘包 SocketServer 模块(ThreadingTCPServer源码剖析) ...

  9. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

随机推荐

  1. [daily][grub2] grub2修改内核选项

    以前, 我们就直接去修改 /boot/grub/grub.cfg 文件了. 其实这并不正确. 正确的做法是: 1.  修改 /etc/default/grub 文件. [root@dpdk ~]# c ...

  2. Pytorch安装教程

    一.准备 Window10系统+Ubuntu16.10系统.Anaconda3.5(python3.6) 二.流程 (1)由于墙的问题,用conda安装Pytorch过程中会连接失败,这是因为Anac ...

  3. JMeter之http接口测试

    能做哪些类型性能测试 接口 文件传输(ftp) 数据库 支持自定义java组件开发 安装 http://jmeter.apache.org/ 进入上面的链接 选择合适版本下载 启动 使用 Jmeter ...

  4. 1、python接口测试requests

    import requestsimport jsonr=requests.get('http://www.baidu.com')                        #get 请求方式r=r ...

  5. TZOJ 3198: 区间和

    描述 给定n个数据,有两个操作,加减其中的一个数据,当然还可查询在某段数据的和. 输入 输入数据有多组,每组数据的第一行输入n,1=<n<=500000,代表数据的个数.第二行输入具体数据 ...

  6. 前端 HTML body标签相关内容 常用标签 标题标签 h1-h6

    标题标签 h1~h6 <h1> - <h6> 标签可定义标题.<h1> 定义最大的标题.<h6> 定义最小的标题. 由于 h 元素拥有确切的语义,因此请 ...

  7. [phomeflashpic]怎样调用帝国CMS图片幻灯效果

    今天改网站时试着用帝国cms的[phomeflashpic]标签调用图片作为首页幻灯片,默认是[phomeflashpic]0,3,300,235,0,0,13,3[/phomeflashpic],其 ...

  8. 关于ARMv8另外几个问题

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27510675 问题1:支持ARMv ...

  9. mysql mpm

    mysql mpm 参考文章 http://www.myexception.cn/mysql/1968274.html http://www.linuxidc.com/Linux/2013-07/86 ...

  10. pandas操作速查表

    准备工作 import numpy as np import pandas as pd 倒入文件或创建一个数据表 df = pd.DataFrame(pd.read_csv('name.csv',he ...