Python异常

Python异常体系

异常结构图

image

常见异常
  • BaseException 所有异常的基类
    • Exception
      • StandardException 所有的内建标准异常的基类
        • ArithmeticError 所有数值计算错误的基类
          • FloatingPointError 浮点计算错误
          • OverflowError 数值运算超出最大限制
          • ZeroDivisionError 除(或取模)零 (所有数据类型)
        • EnviromentError 操作系统错误的基类
          • IOError 输入/输出操作失败
          • OSError 操作系统错误
        • ImportError 导入模块/对象失败
        • LookupError 无效数据查询的基类
          • IndexError 序列中没有此索引(index)
          • KeyError 映射中没有这个键
        • MemoryError 内存溢出错误(对于Python 解释器不是致命的)
        • NameError 未声明/初始化对象 (没有属性)
          • UnboundLocalError 访问未初始化的本地变量
        • ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
        • RuntimeError 一般的运行时错误
          • NotImplementedError 尚未实现的方法
        • SyntaxError Python语法错误
          • IndentationError 缩进错误
            • TabError Tab 和空格混用
        • TypeError 对类型无效的操作
        • ValueError 传入无效的参数
          • UnicodeError Unicode相关的错误
            • UnicodeDecodeError Unicode解码时的错误
            • UnicodeEncodeError Unicode编码时错误
            • UnicodeTranslateError Unicode转换时错误
      • Warning 警告的基类

注意,BaseException是异常的顶级类。但是这个类不能当作是由用户定义的类直接继承的,而是要继承Exception。

异常捕获取

    # -*- coding: UTF-8 -*-
    
    
    # 当异常时,捕获并获取异常
    def test1():
        try:
            open("1.tx")
        except IOError:
            print("发生了错误")
    
    
    # 当异常时,捕获并获取异常对象
    def test2():
        try:
            open("1.tx")
        except IOError as errorMsg:
            print("发生了错误", errorMsg)
    
    
    # 当异常未发生时,执行else语句
    def test3():
        try:
            open("2.txt")
        except IOError as errorMsg:
            print("发生了错误", errorMsg)
        else:
            print("没有发生异常")
    
    
    # 无论是否发生异常,finally语句必执行
    def test4():
        try:
            open("2.txt")
        except IOError as errorMsg:
            print("发生了错误", errorMsg)
        finally:
            print("finally语句执行")
    
    
    # try...finally语句
    def test5():
        try:
            open("2.txt")
        finally:
            print("finally语句执行")
    
    
    # 触发异常raise
    def test6():
        raise Exception("触发异常")
    
    
    test1()
    test2()
    test3()
    test4()
    test5()
    try:
        test6()
    except Exception as errorMsg:
        print(errorMsg)

自定义异常

# -*- coding: UTF-8 -*-


class MyException(Exception):
    def __init__(self, arg):
        self.arg = arg

    def __str__(self):
        return repr(self.arg)


def test_exception():
    try:
        raise MyException("自定义异常")
    except MyException as errorMsg:
        print(errorMsg.arg)


test_exception() 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值