24 Python assert,Exception的异常信息为unicode的中文时

Python assert,Exception的异常信息

  1. 异常信息类型为str

    try:
       assert 1 > 2,'except'
    except Exception,e:
       print e,type(e)
    
    try:
       raise Exception('except')
    except Exception,e:
       print e,type(e)
    
    '''
    result
    except <type 'exceptions.AssertionError'>
    except <type 'exceptions.Exception'>
    '''
  2. 异常信息类型为unicode的中文

    try:
       assert 1 > 2,u'异常'
    except Exception,e:
       pass
    
    try:
       raise Exception(u'异常')
    except Exception,e:
       pass

    没问题…继续看下面

    try:
       assert 1 > 2,u'异常'
    except Exception,e:
       print type(e),'e = ',e  #<type 'exceptions.AssertionError'> e =  
    
    try:
       raise Exception(u'异常')
    except Exception,e:
       print type(e),'e = ',e  #UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

    so使用unicode类型作为异常信息时请小心…


转载请标明出处,原文地址(http://blog.youkuaiyun.com/lis_12/article/details/53929366).

如果觉得本文对您有帮助,请点击‘顶’支持一下,您的支持是我写作最大的动力,谢谢。

Python 提供了丰富的内置异常类型,用于处理各种运行错误和程序异常情况。以下是 Python 中常见的内置异常类型列表,并简要说明其用途: ### 内置异常类型列表 - `Exception`:所有内置异常的基类。 - `ArithmeticError`:所有数值计算错误的基类,包括 `FloatingPointError`、`OverflowError` 和 `ZeroDivisionError`。 - `AssertionError`:当 `assert` 语句失败引发。 - `AttributeError`:当尝试访问对象不存在的属性或方法引发。 - `BaseException`:所有异常的基类,比 `Exception` 更基础。 - `BlockingIOError`:当一个操作需要阻塞但设置为非阻塞模式引发。 - `BrokenPipeError`:当管道另一端关闭引发。 - `BufferError`:当缓冲区相关的操作失败引发。 - `BytesWarning`:与字节相关警告的基类。 - `ChildProcessError`:当子进程操作失败引发。 - `ConnectionAbortedError`:连接被中止引发。 - `ConnectionError`:网络连接错误的基类。 - `ConnectionRefusedError`:连接请求被拒绝引发。 - `ConnectionResetError`:连接被重置引发。 - `DeprecationWarning`:用于指示某个功能已弃用。 - `EOFError`:当读取输入流到达文件结尾引发。 - `EncodingWarning`:编码相关警告。 - `EnvironmentError`:操作系统错误的基类,仅在 Windows 上可用 [^1]。 - `Exception`:所有标准异常的基类。 - `FileExistsError`:创建文件或目录失败因为目标已经存在引发。 - `FileNotFoundError`:找不到指定的文件或目录引发。 - `FloatingPointError`:浮点运算失败引发。 - `FutureWarning`:未来版本中可能会改变的功能警告。 - `GeneratorExit`:生成器停止引发。 - `ImportError`:导入模块失败引发。 - `IndentationError`:缩进不正确引发。 - `IndexError`:索引超出序列范围引发。 - `InterruptedError`:系统调用被中断引发。 - `IOError`:I/O 操作失败引发 [^1]。 - `IsADirectoryError`:对目录执行文件操作引发。 - `KeyError`:访问字典中不存在的键引发。 - `KeyboardInterrupt`:用户按下 Ctrl+C 或其他中断键引发。 - `LookupError`:索引或键不存在引发的基类。 - `MemoryError`:内存不足引发。 - `ModuleNotFoundError`:找不到指定模块引发。 - `NameError`:变量未定义引发。 - `NotADirectoryError`:对非目录执行目录操作引发。 - `NotImplementedError`:抽象方法未实现引发。 - `OSError`:操作系统错误的基类 [^1]。 - `OverflowError`:数值运算结果太大无法表示引发。 - `PendingDeprecationWarning`:即将弃用的功能警告。 - `PermissionError`:没有权限执行特定操作引发。 - `ProcessLookupError`:找不到指定进程引发。 - `RecursionError`:递归深度超过限制引发。 - `ReferenceError`:弱引用试图访问已被垃圾回收的对象引发。 - `ResourceWarning`:资源使用相关警告。 - `RuntimeError`:运行错误的一般性异常。 - `RuntimeWarning`:运行警告。 - `StopAsyncIteration`:异步迭代结束引发。 - `StopIteration`:迭代结束引发。 - `SyntaxError`:语法错误引发。 - `SystemError`:解释器内部错误引发。 - `SystemExit`:通过 `sys.exit()` 调用退出程序引发。 - `TabError`:缩进中混合使用空格和制表符引发。 - `TimeoutError`:操作超引发。 - `TypeError`:类型操作不当引发。 - `UnboundLocalError`:本地变量未绑定值引发。 - `UnicodeDecodeError`:解码 Unicode 字符串失败引发。 - `UnicodeEncodeError`:编码 Unicode 字符串失败引发。 - `UnicodeError`:Unicode 相关错误的基类。 - `UnicodeTranslateError`:转换 Unicode 字符串失败引发。 - `UserWarning`:用户自定义警告。 - `ValueError`:函数接收到不合适值引发。 - `Warning`:所有警告类型的基类。 - `WindowsError`:Windows 系统错误的基类 [^1]。 - `ZeroDivisionError`:除以零引发。 ### 示例代码 以下是一个简单的示例,演示如何捕获不同的异常类型: ```python my_dict = {'a': 1, 'b': 2, 'c': 3} try: value = my_dict['d'] except KeyError: print('Key not found!') else: print('NO error occurred!') finally: print('....') ``` 在上述代码中,如果尝试访问字典中不存在的键 `'d'`,将引发 `KeyError` 并进入 `except` 块,而 `else` 块不会执行;无论是否发生异常,`finally` 块始终会执行 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值