美文网首页
Python基础教程系列七:异常处理

Python基础教程系列七:异常处理

作者: 奇遇Python | 来源:发表于2019-09-25 19:07 被阅读0次

今天主要讲解:python异常处理


image.png

异常就是程序运行时发出的错误信息。

BaseException: 所有异常的基类
Exception: 常规错误的基类
ZeroDivisionError:除(或取模)零 (所有数据类型)
AttributeError: 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError: 输入/输出异常;基本上是无法打开文件
ImportError : 无法引入模块或包;基本上是路径问题或名称错误
IndentationError : 语法错误(的子类) ;代码没有正确对齐
IndexError: 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError : 试图访问字典里不存在的键
KeyboardInterrupt: Ctrl+C被按下
NameError : 使用一个还未被赋予对象的变量
SyntaxError: Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError : 传入对象类型与要求的不符合
UnboundLocalError: 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError : 传入一个调用者不期望的值,即使值的类型是正确的

def divide(x, y):
    try:
        result = x / y
    except ZeroDivisionError:
        print("division by zero!")
    else:
        print("result is", result)
    finally:
            print("executing finally clause")

1、基本语法或单分支:

try:
    正常操作
except   异常类型:
    发生异常,执行这块代码

2、多分支

try:
    正常操作
except 名字:
    如果在try部份引发了'name'异常
except  名字,数据:
    如果引发了'name'异常,获得附加的数据
else:
    如果没有异常发生

3、万能异常(使用except而不带任何异常类型)

try:
    正常的操作
except:
    发生异常,执行这块代码
else:
    如果没有异常执行这块代码

4、try-finally 语句

try:
正常的操作
finally:
退出try时总会执行

5、触发异常raise

try:
    raise Networkerror("Bad hostname")
except Networkerror,e:
    print e.args

6、 综合示例

try:
    # 可能发生异常的代码
except 异常类型1 as 变量名:
    print(变量名) # 变量名存储的是具体的错误信息
except 异常类型2 as 变量名:
    print(变量名) # 变量名存储的是具体的错误信息
except Exception as 变量名:
    print(变量名) # 变量名存储的是具体的错误信息
else:
    print('如果以上代码没有发生异常以及异常处理工作就执行这里的代码')
    # logging模块
finally:
    print('不管代码是否有异常都会执行,且在函数中遇到return仍然会执行')
关键字 关键字说明
try/except 捕获异常并处理
pass 忽略异常
else 如果try中的语句没有引发异常
as 定义异常实例进行as重命名
finally 无论是否出现异常,都执行的代码
raise 抛出和引发异常

相关文章

网友评论

      本文标题:Python基础教程系列七:异常处理

      本文链接:https://www.haomeiwen.com/subject/srqwuctx.html