Python进阶(2)--异常处理

异常处理

在程序运行过程中,总会遇到各种各样的错误。

  1. 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误通常称之为bug,bug是必须修复的。
  2. 有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理
  3. 还有一类错误是完全无法在程序运行过程中预测的,比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然断掉了。这类错误也称为异常,在程序中通常是必须处理的,否则,程序会因为各种问题终止并退出。
  4. Python内置了一套异常处理机制,来帮助我们进行错误处理

错误类型

Python中的错误可以分为两种:语法错误和异常

其中主要的有:

主要错误.png

语法错误

代码编译时的错误,不符合Python语言规则的代码会停止编译并返回错误信息。

  1. 缺少起始符号或结尾符号(括号、引号等)
    语法1.png

  2. 缩进错误
    语法2.png

  3. 关键词拼写错误
    在这里插入图片描述

异常错误

异常错误一共有六种典型的异常:

除零错误

除零错误(ZeroDivisionError):除数为0。
在这里插入图片描述

名称错误

名称错误(NameError):变量使用前未进行申明或者初始化 。
在这里插入图片描述

类型错误

类型错误(TypeError):某些函数或者方法只适用于特定的数据类型,如果 对数据类型的操作不当,就会产生类型错误 。
在这里插入图片描述

数值错误

数值错误(ValueError):在输入类型正确的情况下,具体输入值错误 。
在这里插入图片描述

索引错误

索引错误(IndexError):超出序列长度的索引操作。

在这里插入图片描述

属性错误

属性错误(AttributeError):方法或者属性不适用该对象 。

在这里插入图片描述

捕获异常

高级语言通常都内置了一套错误处理机制,Python也不例外:在Python中可通过try…except…else…finally…机制捕获异常并进行处理。

捕获.png

比如:

    li = [3, 2, 4, 1, 3, 2]
    try:
        # 里面放我觉得可能会出错的代码块
        li[6]
    except Exception as e:
        # 出错之后你怎么处理? 略过 要么就是 打印错误
        print(e)
    else:
        # 这里执行如果try的代码块没有出错才会执行
        print("try 代码块没有错误")
    finally:
        # 这里的代码放try except 不管什么样的结果它都会执行
        print("这句话必选打出来")

    print("代码继续执行")

抛出异常

Python 使用 raise 语句抛出一个指定的异常:

在这里插入图片描述

例如执行以下代码会触发异常:

x = 10
if x > 5:
    raise Exception('x不能大于5。x的值为:{}'.format(x))
---------------------------
输出结果:
    raise Exception('x不能大于5。x的值为:{}'.format(x))
Exception: x不能大于5。x的值为:10

raise 需要指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。

自定义异常

在Python中可以通过创建一个新的异常类来拥有自己的异常。

自定义异常的原因:

  1. Python提供的内建异常不够用
  2. 可以预估某个错误的产生

异常类继承自 Exception 类,可以直接继承,或者间接继承:

class MyError(Exception):
    pass

如此便可以创建一个新的异常类。比如:

class MyError(Exception):
    pass
if __name__ == '__main__':
	li1 = [213, 43213, -312, 3412, 41, 313]
	for i in li1:
    	v = 100 / i
    	print(v)
    	if v < 0:
        	# 抛出异常
        	raise MyError("这批货有问题,做工太差")

输出结果:

    v = 100 / i
              ^
TabError: inconsistent use of tabs and spaces in indentation

总结

本篇介绍了程序的异常处理:

  1. 语法错误:

    1. 缺少起始符号或结尾符号(括号、引号等)
    2. 缩进错误
    3. 关键词拼写错误
  2. 异常错误:除零错误、名称错误、类型错误、数值错误、索引错误以及属性错误。

  3. 还介绍了如何:

    1. 捕获异常:try…except…else…工作原理

    2. 抛出异常:使用 raise 语句抛出一个指定的异常

    3. 自定义异常:异常类继承自 Exception 类,可以直接继承,或者间接继承

      class MyError(Exception):
      除零错误、名称错误、类型错误、数值错误、索引错误以及属性错误。

  4. 还介绍了如何:

    1. 捕获异常:try…except…else…工作原理

    2. 抛出异常:使用 raise 语句抛出一个指定的异常

    3. 自定义异常:异常类继承自 Exception 类,可以直接继承,或者间接继承:

      class MyError(Exception):
      pass

相关推荐

  1. 音频处理2_概念

    2024-07-18 06:42:05       32 阅读
  2. [Python] 数据处理:Numpy入门

    2024-07-18 06:42:05       38 阅读
  3. python 教程--PIL图像处理

    2024-07-18 06:42:05       25 阅读
  4. python高级(四)[模块、包、异常]

    2024-07-18 06:42:05       29 阅读
  5. Python学习入门(2)——功能

    2024-07-18 06:42:05       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 06:42:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 06:42:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 06:42:05       58 阅读
  4. Python语言-面向对象

    2024-07-18 06:42:05       69 阅读

热门阅读

  1. 如何在网页中对视频进行截图

    2024-07-18 06:42:05       24 阅读
  2. 音频解码器音乐播放器

    2024-07-18 06:42:05       19 阅读
  3. mlstm_biaffine_cyc_fgm

    2024-07-18 06:42:05       18 阅读
  4. 72、Flink 的 DataGen 连接器详解

    2024-07-18 06:42:05       22 阅读
  5. Hive第三天

    2024-07-18 06:42:05       18 阅读