异常

2018-11-13 07:34:05来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一、异常

1. 定义

  • 程序在运行过程中产生的错误

 

2. 结构

  • 产生异常:python解释器调用代码,出现错误,系统自动产生一个异常对象,并把错误返回给调用方
  • 捕获异常:通过try...except可以对系统产生的异常进行捕获
  • 处理异常:如果except捕获到了相对应的异常,则在except代码块里处理异常,否则python解释器将错误返回调用者
  • 别名:指接收到的异常对象

 

try:
    代码块
except 异常名称 as 别名: 
    代码块
except 异常名称 as 别名:
    代码块
...
else:
    不产生异常时执行这里的代码
finally:
    不管有无异常,都执行这里的代码

 3. Exception

    Exception是所有异常的基类。换句话说,所有的错误都是Exception的子类对象。

二、抛出异常(raise)

import traceback


def cul(a, b):
    if (type(a) == int or type(a) == float) and (type(b) == int or type(b) == float):
        return a + b
    else:
        raise Exception("参数数据类型有误")

try:
    print(cul(1, "a"))
except Exception as e:
    print(e)  # 参数数据类型有误
    print(traceback.format_exc())  # 获取堆栈信息
    print("出现了错误")  # 出现了错误


# print(traceback.format_exc())结果:
Traceback (most recent call last):
  File "E:/python_个人/day 019/临时.py", line 11, in <module>
    print(cul(1, "a"))
  File "E:/python_个人/day 019/临时.py", line 8, in cul
    raise Exception("参数数据类型有误")

 

三、自定义异常(慎用

  • 自定义一个类,并继承Exception类,类中内容全部继承Exception。就自定义了一个异常
  • 名字须符合规范
class GenderError(Exception):
    pass


class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender


def gender_judge(obj):
    if obj.gender != "":
        raise GenderError("性别不对")


p1 = Person("Tom", "")
p2 = Person("Linda", "")

try:
    gender_judge(p1)
    gender_judge(p2)
except GenderError as e:
    print(e)  # 性别不对

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python 技巧-1 合并两个字典

下一篇:Python:os 模块常用方法简介