网站建设为什么学flash,如何建立外卖网站,甜点网站建设的功能及意义,网站建设 项目要求目录
❤ 自定义抛出异常关键字 - raise
❤ 使用raise主动引发异常
❤ raise 关键字的用法
❤ 触发异常
❤ 自定义异常类 在前面我们学过异常三个关键字分别是try、except 以及 finally
在编程过程中合理的使用异常可以使得程序正常的执行。有直接抛出异常的形式也能通过捕获异常加入异常时的业务逻辑处理。
❤ 自定义抛出异常关键字 - raise
raise 关键字的功能可以将信息已报错的形式抛出
当程序出现错误python会自动引发异常也可以通过raise显示地引发异常。一旦执行了raise语句raise后面的语句将不能执行。
❤ 使用raise主动引发异常 raise 异常名 raise 异常名, 附加数据 raise 类名 ❤ raise 关键字的用法
try:s Noneif s is None:print s 是空对象raise NameError #如果引发NameError异常后面的代码将不能执行print len(s) #这句不会执行但是后面的except还是会走到
except TypeError:print 空对象没有长度s None
if s is None:raise NameError
print is here? #如果不使用try......except这种形式那么直接抛出异常不会执行到这里
❤ 触发异常
我们可以使用raise语句自己触发异常
raise语法格式如下 raise [Exception [, args [, traceback]]] 语句中 Exception 是异常的类型例如NameError参数标准异常中任一种args 是自已提供的异常参数。
最后一个参数是可选的在实践中很少使用如果存在是跟踪异常对象。
实例:
一个异常可以是一个字符串类或对象。 Python的内核提供的异常大多数都是实例化的类这是一个类的实例的参数。
定义一个异常非常简单如下所示
def functionName( level ):if level 1:raise Exception(Invalid level!, level)# 触发异常后后面的代码就不会再执行
注意为了能够捕获异常except语句必须有用相同的异常来抛出类对象或者字符串
例如我们捕获以上异常except语句如下所示 try: 正常逻辑 except Exception,err: 触发自定义异常 else: 其余代码 实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 定义函数
def mye( level ):if level 1:raise Exception,Invalid level!# 触发异常后后面的代码就不会再执行
try:mye(0) # 触发异常
except Exception,err:print 1,err
else:print 2
执行以上代码输出结果为 $ python test.py 1 Invalid level! python3.6以后 改为:
def mye( level ):if level 1:raise Exception(Invalid level!)# 触发异常后后面的代码就不会再执行
try:mye(0) # 触发异常
except Exception as err:print(1,err)
else:print(2) ❤ 自定义异常类
python的异常分为两种
内建异常就是python自己定义的异常。不够用用户自定义异常
首先看看python的异常继承树
我们可以看到python的异常有个大基类。然后继承的是Exception。所以我们自定义类也必须继承Exception。
创建自定义异常类案例
class MyException(Exception):def __init__(self, msg)::param msg: 异常信息self.msg msg#最简单的自定义异常
class FError(Exception):pass 抛出异常、用try-except抛出
try:raise FError(自定义异常)
except FError as e:print(e)
实例:
class CustomError(Exception):def __init__(self,ErrorInfo):super().__init__(self) #初始化父类self.errorinfoErrorInfodef __str__(self):return self.errorinfoif __name__ __main__:try:raise CustomError(客户异常)except CustomError as e:print(e)
总结
自定义异常必须继承基类Exception需要在构造函数中自定义错误的信息