一、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.

python断言 msg Python断言错误怎么解决_python断言 msg

python断言 msg Python断言错误怎么解决_系统错误_02

def yichang():
    while True:
        try:
            num = int(input('>>'))
            num += 1
            print('值',num)
        except Exception as e:
            print('{%s}我是一个错误..'%e)

yichang()

捕获异常的基础写法

python断言 msg Python断言错误怎么解决_python断言 msg

python断言 msg Python断言错误怎么解决_系统错误_02

>>34
值 35
>>s
{invalid literal for int() with base 10: 's'} 我是一个错误。。
>>

result

2.

python断言 msg Python断言错误怎么解决_python断言 msg

python断言 msg Python断言错误怎么解决_系统错误_02

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!!

python断言 msg Python断言错误怎么解决_python断言 msg

python断言 msg Python断言错误怎么解决_系统错误_02

>>1
值 2
要是上面没有错会执行我。。else
不管上面错不错误【都会】执行我。。finally,yes,yes!!
>>d
我是一个调用者不期望的错误。。。 invalid literal for int() with base 10: 'd'
不管上面错不错误【都会】执行我。。finally,yes,yes!!
>>

result

三、断言(assert)

明确的判断前面的某个条件是否符合你的要求,如果不符合,程序就是根本走不下去的错误,直接退出或抛出错误。例如:连接远程的ftp , 没有IP地址,就根本连接不上

python断言 msg Python断言错误怎么解决_python断言 msg

python断言 msg Python断言错误怎么解决_系统错误_02

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

断言

python断言 msg Python断言错误怎么解决_python断言 msg

python断言 msg Python断言错误怎么解决_系统错误_02

我是被抓住的错误。。。
Traceback (most recent call last):
  File "D:/1.pycharm/day2018_11_15/断言.py", line 21, in <module>
    assert 1 == 1+2
AssertionError

result

 

断言是用来检查非法情况而不是错误情况的,用来帮开发者快速定位问题的位置。
异常处理用于对程序发生异常情况的处理,增强程序的健壮性和容错性。