博客
关于我
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事务与锁详解
查看>>
MySQL事务原理以及MVCC详解
查看>>
MySQL事务及其特性与锁机制
查看>>
mysql事务理解
查看>>
MySQL事务详解结合MVCC机制的理解
查看>>
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
查看>>
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
查看>>
mysql五补充部分:SQL逻辑查询语句执行顺序
查看>>
mysql交互式连接&非交互式连接
查看>>
MySQL什么情况下会导致索引失效
查看>>
Mysql什么时候建索引
查看>>
MySql从入门到精通
查看>>
MYSQL从入门到精通(二)
查看>>
mysql以下日期函数正确的_mysql 日期函数
查看>>
mysql以服务方式运行
查看>>
mysql优化--索引原理
查看>>
MySQL优化配置详解
查看>>
mysql会员求积分_MySql-统计所有会员的最高前10次的积分和
查看>>
MySQL保姆级教程(SQL语法基础篇)从小白到高手的进阶指南,收藏这一篇就够了
查看>>