python_异常处理_断言
一、Python标准异常
| 常用异常 | |
| Exception | 常规错误的基类 |
| AttributeError | 试图访问一个对象没有的属性 |
| IOError | 输入/ 输出异常,基本上是无法打开文件 |
| ImportError | 无法引入模块或包,一般为路径或名称错误 |
| IndentationError | 语法错误,代码没有正确对齐(缩进错误) |
| IndexError | 下标索引超出序列边界 |
| KeyError | 试图访问字典里不存在的键 |
| keyboardInterrupt | Ctrl+C被按下 |
| NameError | 使用一个未被赋予的变量 |
| SyntaxError | Python代码非法,代码不能编译 |
| UNboundLocalError | 试图访问一个还未被设置的局部变量 |
| ValueError | 传入一个调用者不期望的值,即类型是正确的 |
| TypeError | 对类型无效的操作 |
| 标准异常 | |
| BaseException | 所有异常的基类 |
| SystemExit | 解释器请求退出 |
| Stoplteration | 迭代器没有更多的价值 |
| GeneratorExit | 生成器(generator)发送异常来通知退出 |
| StandarError | 所有的内建标准异常的基类 |
| ArithmeticError | 所有数值计算错误的基类 |
| FloatingPointError | 浮点计算错误 |
| OverflowError | 数值运算超出最大限制 |
| ZerodivisionError | 除(或取模)零(所有数据类型) |
| AssertionError | 断言语句失败 |
| EOFError | 没有内建输入,到达EOF标记 |
| EnvironmentError | 操作系统错误的基类 |
| OSError | 操作系统错误 |
| WindowsError | 系统调用失败 |
| ImportError | 无效数据查询的基类 |
| MemoryError | 内存溢出错误 |
| ReferenceError | 弱引用(weak reference)试图访问已经垃圾回收了的对象 |
| RuntimeError | 一般的运行时的错误 |
| NotlmplementedError | 尚未实现的方法 |
| TabError | Tab和空格混用 |
| SystemError | 一般的解释器系统错误 |
| UnicodeError | Unicode相关的错误 |
| UnicodeDecodeError | Unicode解码时的错误 |
| UnicodeEncodeError | Unicode编码时错误 |
| UnicodeTranslateError | Unicode转换时错误 |
| Warning | 警告的基类 |
| DeprecationWarning | 关于被弃用的特征的警告 |
| Futurewarning | 关于构造将来语义会有所改变的警告 |
| OverflowWarning | 旧的关于自动提升为长整型(long)的警告 |
| PendingDeprecationWarning | 关于特性将会被废弃的警告 |
| RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
| SyntaxWarning | 可疑的语法的警告 |
| UserWarning | 用户代码生成的警告 |
二、异常处理
1.
def yichang():
while True:
try:
num = int(input('>>'))
num += 1
print('值',num)
except Exception as e:
print('{%s}我是一个错误..'%e) yichang()
捕获异常的基础写法
>>34
值 35
>>s
{invalid literal for int() with base 10: 's'} 我是一个错误。。
>>
result
2.
def yichang():
while(True):
try:
num = int(input('>>')) # 字符无法强制转换为整型
num = num+1
print("值",num)
except (ValueError ,TypeError) as e:
print("我是一个调用者不期望的错误。。。",e)
except Exception as e: # e 是try ..except .. 捕获到的异常,Exception 是基类(可以捕获全部的异常)
print('{%s} 我是一个错误。。'% e)
else:
print("要是上面没有错会执行我。。else")
finally:
print('不管上面错不错误【都会】执行我。。finally,yes,yes!!') yichang()
异常处理完全~版~,yes!!
>>1
值 2
要是上面没有错会执行我。。else
不管上面错不错误【都会】执行我。。finally,yes,yes!!
>>d
我是一个调用者不期望的错误。。。 invalid literal for int() with base 10: 'd'
不管上面错不错误【都会】执行我。。finally,yes,yes!!
>>
result
三、断言(assert)
明确的判断前面的某个条件是否符合你的要求,如果不符合,程序就是根本走不下去的错误,直接退出或抛出错误。例如:连接远程的ftp , 没有IP地址,就根本连接不上
q=2
try:
assert q == 1+1
assert q ==1+2 # 错误可以被抓住,但对于 这种错误最好不要去抓
except Exception as e:
print('我是被抓住的错误。。。%s' % e) assert q ==1+1
assert 1 == 1+2
断言
我是被抓住的错误。。。
Traceback (most recent call last):
File "D:/1.pycharm/day2018_11_15/断言.py", line 21, in <module>
assert 1 == 1+2
AssertionError
result
关于断言:https://www.cnblogs.com/shangren/p/8038935.html
断言是用来检查非法情况而不是错误情况的,用来帮开发者快速定位问题的位置。
异常处理用于对程序发生异常情况的处理,增强程序的健壮性和容错性。
python_异常处理_断言的更多相关文章
- python异常处理与断言以及日志模块
python异常处理与断言 目录: 1.异常处理 2.断言(assert) 3.日志模块(logging) 4.修改之前的车票信息查询,把日志模块.异常处理加进去 1.异常处理 代码如下: 语法: t ...
- day34 异常处理、断言、socket之ftp协议
Python之路,Day20 = 异常处理.断言.socket之ftp协议 参考博客:http://www.cnblogs.com/metianzing/articles/7148191.html 异 ...
- Swift开发第一篇——异常处理及断言
本篇分两部分: 1.错误和异常处理 2.Swift 中的断言 1.错误和异常处理 在 OC 开发中,我们通常会将 error 置为 nil NSError *error; BOOL success = ...
- python异常处理和断言
http://blog.csdn.net/pipisorry/article/details/21841883 关于异常处理有必要么的讨论 最重要的问题是你在开发过程中隐藏了bug,如果当时你没加这个 ...
- Python_异常处理结构与调试
while True: x =input('Pleaes input:') try: x=int(x) print('You have input {0}'.format(x)) break exce ...
- 1.Python_字符串_常用办法总结
明确:对字符串的操作方法都不会改变原来字符串的值. 1.去掉空格和特殊符号 name.strip() 去掉空格和换行符 name.strip("xx") 去掉某个字符串 name. ...
- python异常处理、断言
异常处理基本语法 捕获异常 try: 语句1 语句2 ... except ERRNAME as e: print(e) #尝试执行语句,捕获到ERRNAME异常时打印异常信息e 捕获多个异常 try ...
- (69)Python异常处理与断言
http://blog.csdn.net/pipisorry/article/details/21841883 断言 断言是一句必须等价于布尔真的判定;此外,发生异常也意味着表达式为假.这些工作类似于 ...
- 14、python异常处理及断言
前言:本文主要介绍python中异常的处理及断言,包括异常类型.异常捕获.主动跑出异常和断言. 一.异常类型介绍 什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,会影响程序的正常执行,一般 ...
随机推荐
- python操作三大主流数据库(6)python操作mysql⑥新闻管理后台功能的完善(增、ajax异步删除新闻、改、查)
python操作mysql⑥新闻管理后台功能的完善(增.删.改.查)安装表单验证D:\python\python_mysql_redis_mongodb\version02>pip instal ...
- 通过python操作smtplib模块发送邮件
# gconf.py SMTP_SERVER_HOST='smtp.exmail.qq.com' SMTP_SERVER_PORT=25 SMTP_USER='jack@qq.com' # 邮箱客户端 ...
- 转载:UML学习(一)-----用例图 (silent)
原文:http://www.cnblogs.com/silent2012/archive/2011/09/07/2169518.html 1.什么是用例图 用例图源于Jacobson的OOSE方法,用 ...
- 滑动时候警告:Unable to preventDefault inside passive event listener
1 前言 在制作2048时,需要在手机端添加滑动检测事件,然后发现控制台有警告,如下: main2048.js:218 [Intervention] Unable to preventDefault ...
- 31)django-序列化
目录 1)序列化 2)为什么不用json序列化 3)django序列化QuerySet,ErrorDict数据 一:序列化 序列化是将对象状态转换为可保持或传输的格式的过程 反序列化是指将存储在存储媒 ...
- 如何创建一个标准的Windows服务
出处:http://www.cnblogs.com/wuhuacong/archive/2009/02/11/1381428.html 如何创建一个标准的Windows服务 在很多时候,我们需要一个定 ...
- 基于ARM Cortex-M和Eclipse的SWO单总线输出
最近在MCU on Eclipse网站上看到Erich Styger所写的一篇有关通过SWD的跟踪接口SWO获取ARM Cortex-M相关信息的文章,文章结构明晰,讲解透彻,本人深受启发,特意将其翻 ...
- Confluence 6 新 Confluence 安装配置一个数据源连接
如果在你的 Tomcat 中配置了数据源,并且Confluence 设置指南在安装的时候检测到这个配置的时候,配置数据源的选项将会提供给你进行配置.入股你希望使用数据源,请参考下面的配置. 1. 停止 ...
- Confluence 6 SQL Server 测试你的数据库连接
在你的数据库设置界面,有一个 测试连接(Test connection)按钮可以检查: Confluence 可以连接你的数据库服务器 数据库字符集和隔离级别是正确的 你的数据库用户有正确的数据库权限 ...
- Java的家庭记账本程序(C)
日期:2019.2.4 博客期:029 星期一 今天初步修改了程序,实现了几个基本的功能: 个人信息管理.除查询以外的全部功能!