初探异常
-
什么是异常与异常处理
- 异常就是错误
- 异常会导致程序崩溃并停止运行
- 能监控并捕获到异常,将异常部位的程序进行修理。使得程序继续正常运行
-
异常的语法结构
-
try: <代码块1> #被try关键字检查并保护的业务代码 except <异常类型>: <代码块2> #代码块1出现错误后执行的代码块
-
-
异常的语法:
-
a = 1 / 0 print(a) # a=1/0 ZeroDivisionError: division by zero
-
try: a = 1 / 0 except: print(‘0不能被整除‘)#输出到控制台 print(‘程序继续执行‘)#输出到控制台
-
-
捕获通用异常
-
无法确定是哪种异常的情况下使用的捕获方法
-
try: <代码块> except Exception as e: <异常代码块>
-
try: a = 1 / 0 except Exception as e: print("try代码块中的语句出现错误,具体错误是:{}".format(e)) # try代码块中的语句出现错误,具体错误是:division by zero
-
-
捕获具体异常
- 无法确定是哪种异常的情况下使用的捕获方法
- Except <具体的异常类型> as e
-
捕获多个异常1
-
try: a = 1 / 0 except ZeroDivisionError as e: print("try代码块中的语句出现错误,具体错误是:{}".format(e)) # try代码块中的语句出现错误,具体错误是:division by zero except Exception as e: print("try代码块中的语句出现错误,具体错误是:{}".format(e)) # try代码块中的语句出现错误,具体错误是:division by zero
-
-
捕获多个异常2
-
try: a = 1 / 0 except (ZeroDivisionError, Exception) as e: print("try代码块中的语句出现错误,具体错误是:{}".format(e)) # try代码块中的语句出现错误,具体错误是:division by zero
-
Python中的异常类型
-
异常名称 说明 Exception 通用的异常类型(基类) ZerorivisionError 不能整除0 AttributeError 对象没有这个属性 IOError 输入输出操作失败 IndexError 没有当前的索引 -
异常名称 说明 KeyError 没有这个键值(key) NameError 没有这个变量(未初始化对象) SyntaxError Python语法错误 SystemError 解释器的系统错误 ValueError 传入的参数错误
异常中的finally
-
finally的功能
- 无论是否发生异常,一定会执行的代码块
- 在函数中,即便在try或except中进行了return也依然会执行finally语法块
- try语法至少要伴随except或finally中的一个
-
finally的用法
-
try: <代码块1> except: <代码块2> finally: <代码块3>
-
-
finally的历史
- 在Python2.5之前的版本,finally需要独立使用,不可以和try配合,之后才演变成现在的模式
自定义抛出异常-raise
-
将信息以报错的形式抛出
-
语法结构
- 用法:
- raise 异常类型(message)
- 参数:
- message:错误信息
- 返回值:
- 无返回值
- 用法:
-
继承基类---Exception
-
在构造函数中定义的错误信息
-
示例代码:
-
class NewError(Exception): def __init__(self, message): self.message = message def test(): raise NewError(‘this is a bug‘) def test1(): try: test() except Exception as e: print(e) test1() # this is a bug
-
断言的功能--assert
-
用于判断一个表达式,在表达式条件为false的时候触发异常。
-
语法格式
- 用法:
- assert expression
- 参数:
- expression:表达式,一般是判断相等,或者判断是某种数据类型饿bool判断的语句
- 返回值:
- 无返回值
- 用法:
-
示例代码:
-
assert 1 > 2 ‘‘‘ assert 1>2 AssertionError ‘‘‘
-
bug定义
- 程序中出现的错误,但又没有通过异常去捕获,以至于直接抛出,导致程序的崩溃。
- bug一词的由来
- bug指的是小虫
- 飞入计算机中导致机器停止