博客
关于我
python 0基础 第十二节 异常处理
阅读量:544 次
发布时间:2019-03-09

本文共 1366 字,大约阅读时间需要 4 分钟。

一. 错误与异常

1. 错误

错误是代码不符合解释器或编译器的语法要求。

2. 常见异常

下面是Python中的几种常见异常及其原因:

  • AttributeError:属性错误,特性引用和赋值出现错误。
  • NameError:试图访问的变量不存在。
  • SyntaxError:代码存在语法错误。
  • KeyError:使用的映射中不存在的关键字。
  • IndexError:索引超出序列范围。
  • TypeError:内建操作或函数应用了错误的类型。
  • ValueError:传给对象的参数类型不正确。

3. 异常结构

所有异常都是/baseexception/的子类,主要分为以下几种:

  • SystemExit:程序退出。
  • KeyboardInterrupt:用户手动中断。
  • GeneratorExit:生成器完成。
  • Exception:普通异常。

4. 错误回溯

通过错误回溯可以查看错误的原因、执行行数以及具体代码。例如,结合下图可以看到错误发生在文件中的某一行某次操作。

5. 异常处理

A. 基本语法

使用try-except结构来捕捉和处理异常:

try:    # 可能出现错误的代码except:    # 捕捉到异常的处理方案
B. 捕获具体异常

当已知具体异常类型时,可以如下捕获:

try:    print(a)except NameError as e:    print(f'捕获异常如下:{e}')

此时如果a未定义,会输出捕获异常如下:name 'a' is not defined。

C. 捕获多种异常

可以在一个except中捕获多个异常:

try:    # 可能出现错误的代码except (TabError, NameError):    # 捕捉到异常的处理方案
D. 不确定异常类型时

使用Exception作为捕获范围:

try:    # 可能出现错误的代码except Exception:    # 捕捉到异常的处理方案

6. Exception 补充

  • 所有代码中的异常都是Exception的子类。
  • 异常的捕获是从上到下依次对比,找到第一个匹配项,不会继续往后查找。

7. 进阶异常处理

结合try-except-else-finally结构处理异常:

try:    # 可能出现错误的代码except Exception as e:    # 捕捉到异常的处理方案else:    # 没有异常执行finally:    # 不管是否出现错误都会执行

二. 主动抛出异常

1. 主动抛出异常

可以使用raise关键字主动抛出异常:

raise ValueError('自定义错误信息')
2. 自定义异常

可以创建自己定义的异常类继承自Exception:

class CustomException(Exception):    passraise CustomException('自定义错误')

三. 断言

  • 断言是代码中强制要求条件满足的设计。
  • assert后面跟条件,条件不满足会抛出AssertionError,同时可以传递错误信息。
  • 示例:判断1是否等于2,结果为false,抛出错误:
    assert 1 == 2, '1不等于2'

    结果为AssertionError: 1不等于2

转载地址:http://sowsz.baihongyu.com/

你可能感兴趣的文章
python制作一个简单的服务器,【Python】 做一个简单的 http 服务器
查看>>
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
查看>>
python利用excel分析过杀漏失
查看>>
python判断汉字数目
查看>>
python判断文件是空的,如果是空的,就删除
查看>>
python判断密码是否正确_python密码判断是否符合要求的方法
查看>>
python判断字符串包含中文_Python 判断字符串是否包含中文
查看>>
python删除第一行_Python 乱码指北:一行删掉根目录
查看>>
Python删除列表元素的三种方法
查看>>
python初步学习-python数据类型-集合(set)
查看>>
python列表生成字典_Python中将字典转换为列表的方法
查看>>
python列表对应元素合并为列表及判断一个列表是几维
查看>>
python列表去重复后按照顺序_从包含不可共元素的Python列表中删除重复元素,同时保留顺序?...
查看>>
python列表前几个_python之列表
查看>>
python列表元组
查看>>
Python列表/元组/字典和集合使用
查看>>
python列表 行列选择_python_pandas_dataframe_行列选择_切片操作
查看>>
python列表
查看>>