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中异常的处理及断言,包括异常类型.异常捕获.主动跑出异常和断言. 一.异常类型介绍 什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,会影响程序的正常执行,一般 ...
随机推荐
- deque-->collections之#双向消息队列
deque 双向队列单项队列 方法: append #往右边添加一个appendleft #左边添加clear #清空队列count #看看这个队列里某个元素出现了多少次extend #从右边多个元素 ...
- oracle 定时 job
最近在工作中遇到了要在oracle里面创建一个定时job,从远程数据库里面定时把某张表里面的数据更新到本地服务器上某个表里,具体操作: 1.在自己数据库里面先创建一张表test create tabl ...
- Oracle的AES加密与解密用法
Oracle的AES加密与解密用法2013年12月11日 11:50:35 iteye_751 阅读数:428--加密字符串create or replace function des3_enc( i ...
- PID控制器开发笔记之十一:专家PID控制器的实现
前面我们讨论了经典的数字PID控制算法及其常见的改进与补偿算法,基本已经覆盖了无模型和简单模型PID控制经典算法的大部.再接下来的我们将讨论智能PID控制,智能PID控制不同于常规意义下的智能控制,是 ...
- SWift中 '?' must be followed by a call, member lookup, or subscript 错误解决方案
那是因为你在使用自己写的分类时没有指定返回的数据类型 指定下返回数据类型就好了 我是用的oc写的分类在Swift中使用的 错误代码 private lazy var btn = UIButton.C ...
- Android 基础 二 四大组件 Activity
Activity Intent IntentFilter 一理论概述 一. Activity 用来提供一个能让用户操作并与之交互的界面. 1.1 启动 startActivity(Intent int ...
- 用D3.js画的人物关系demo
代码下载地址:https://github.com/zhangzn3/group-explorer ### Demo1功能 *** * 支持节点拖拽 * 支持节点拖拽并固定位置 * 支持鼠标浮到节点显 ...
- 按照勾选 删除表格的行<tr>
需求描述:有一个产品列表,有一个删减按钮,点击删减按钮,按照产品勾选的行,删除产品列表中对应的行数据 代码: //html代码<table id="table1"> & ...
- SQLmap注入启发式检测算法
1.经过setTargetEnv()就进入了checkWaf()的环节 def checkWaf(): """ Reference: http://sec ...
- CF1121C 模拟
恶心场恶心题,,round千万不能用库函数的.. /*枚举时间轴t,r是当前完成比例, 记录每个测试的开始时间si,如果有t-si等于r,那么这个测试就标记一下 优先队列存储每个测试,按照si+ai的 ...