python笔记——异常处理

Exception(异常)

一. python标准异常处理

AssertionError 断言语句(assert)失败
AttributeError 尝试访问未知的对象属性
KeyError 字典中查找一个不存在的关键字
OSError 操作系统产生的异常(例如打开一个不存在的文件)
OverflowError 数值运算超出最大限制
SyntaxError Python的语法错误
ZeroDivisionError 除数为零
EOFError 用户输入文件末尾标志EOF(Ctrl+d)
FloatingPointError 浮点计算错误
GeneratorExit generator.close()方法被调用的时候
ImportError 导入模块失败的时候
IndexError 索引超出序列的范围
KeyboardInterrupt 用户输入中断键(Ctrl+c)
MemoryError 内存溢出(可通过删除对象释放内存)
NameError 尝试访问一个不存在的变量
NotImplementedError 尚未实现的方法
ReferenceError 弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象
RuntimeError 一般的运行时错误
StopIteration 迭代器没有更多的值
IndentationError 缩进错误
TabError Tab和空格混合使用
SystemError Python编译器系统错误
SystemExit Python编译器进程被关闭
TypeError 不同类型间的无效操作
UnboundLocalError 访问一个未初始化的本地变量(NameError的子类)
UnicodeError Unicode 相关的错误(ValueError的子类)
ValueErro 传入无效的参数

二.如何检测并处理异常

1.try – except Exception

  • 语法格式

    try:
    检测范围
    except Exception[as reason]:
    出现异常后的处理代码

  • 看例子:

f=open("E:\\不存在的文件.txt")
print(f.read())
f.close()

运行后报错:
Traceback (most recent call last):
  File "C:/Users/MY/AppData/Local/Programs/Python/Python37-32/xiaojiayu.py", line 1, in <module>
    f=open("E:\\不存在的文件.txt")
FileNotFoundError: [Errno 2] No such file or directory: 'E:\\不存在的文件.txt'
  • 对例子检测并处理异常:
try:
    f=open("E:\\不存在的文件.txt")
    print(f.read())
    f.close()
except OSError:
    print("文件不存在")

运行结果:
文件不存在

注意:try语句段是程序员想要检测的语句段范围,只要try语句一旦检测到异常,try语句块里剩下的语句不会被执行。

  • 看例子:
  try:
        sum=1+'1'  #try语句一旦检测到异常,剩下的语句不会被执行
        f = open('我为什么是一个文件.txt')
        print(f.read())
        f.close()
    except OSError as reason:
        print('文件出错了:'+str(reason))
    except TypeError as reason:
        print('类型出错了:' + str(reason))
        
运行结果:
>>> RESTART: C:/Users/MY/AppData/Local/Programs/
     Python/Python37-32/xiaojiayu.py 
 类型出错了:unsupported operand type(s) for
            +: 'int' and 'str'

可以看到,在检测到TypeError以后,try语句段不会继续执行,所以检测不到存在的OSError

  • except(xxxx,xxx….)
    可以同时捕获好几个异常
try:
    sum=1+'1'  #try语句一旦检测到异常,剩下的语句不会被执行
    f = open('我为什么是一个文件.txt')
    print(f.read())
    f.close()
except (OSError,TypeError) as reason:
    print('出错啦:'+str(reason))


2.try – except – finally:
语法格式:

try:
    检测范围
except Exception  as reason:
    出现异常后的处理代码
finally:
    无论如何都会执行的代码

例子:

try:
    f = open('D:\\我为什么是一个文件.txt','w')
    print(f.write('我存在了!'))
    sum=1+'1'  #try语句一旦检测到异常,剩下的语句不会被执行
except (OSError,TypeError) as reason:
    print('出错啦:'+str(reason))

finally:
    f.close()

可以看到执行写入操作后,由于typeError,try语句停止执行
然而,对于文件的关闭是写在finally里的,所以写入,并且保存在磁盘的操作实际上是成功的。

发布了43 篇原创文章 · 获赞 46 · 访问量 4523

猜你喜欢

转载自blog.csdn.net/S_123789/article/details/88969207
今日推荐