博客
关于我
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/

你可能感兴趣的文章
mysql面试题:创建索引时会不会锁表?
查看>>
mysql面试题:高度为3的B+树可以存放多少数据?
查看>>
mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
查看>>
mysql驱动、durid、mybatis之间的关系
查看>>
mysql驱动支持中文_mysql 驱动包-Go语言中文社区
查看>>
MySQL高可用之——keepalived+互为主从
查看>>
MySQL高可用切换_(5.9)mysql高可用系列——正常主从切换测试
查看>>
MySQL高可用解决方案
查看>>
MySQL高可用解决方案详解
查看>>
MYSQL高可用集群MHA架构
查看>>
MySQL高可用集群架构MHA企业级实战
查看>>
MySQL高级-MySQL存储引擎
查看>>
MySQL高级-MySQL并发参数调整
查看>>
MySQL高级-MySQL应用优化
查看>>
MySQL高级-MySQL查询缓存优化
查看>>
MySQL高级-MySQL锁
查看>>
MySQL高级-SQL优化
查看>>
MySQL高级-SQL优化步骤
查看>>
MySQL高级-内存管理及优化
查看>>
MySQL高级-存储过程和函数
查看>>