• python_异常处理


    常用异常种类

     1 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
     2 IOError 输入/输出异常;基本上是无法打开文件
     3 ImportError 无法引入模块或包;基本上是路径问题或名称错误
     4 IndentationError 语法错误(的子类) ;代码没有正确对齐
     5 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
     6 KeyError 试图访问字典里不存在的键
     7 KeyboardInterrupt Ctrl+C被按下
     8 NameError 使用一个还未被赋予对象的变量
     9 SyntaxError Python代码非法,代码不能编译
    10 TypeError 传入对象类型与要求的不符合
    11 UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
    12 ValueError 传入一个调用者不期望的值,即使值的类型是正确的

    如需要考虑到try代码块中可能出现的异常,需要先针对定义,最后定义Exception来确保程序正常运行。

    1 s1 = 'hello'
    2 try:
    3     int(s1)
    4 except KeyError as e:
    5     print '键错误'
    6 except IndexError as e:
    7     print '索引错误'
    8 except Exception as e:
    9     print '错误'

    异常其它结构

     1 try:
     2     # 主代码块
     3     pass
     4 except KeyError as e:
     5     # 异常时,执行该块
     6     pass
     7 else:
     8     # 主代码块执行完,执行该块
     9     pass
    10 finally:
    11     # 无论异常与否,最终执行该块
    12     pass

    主动触发异常

    1 try:
    2     raise Exception('错误了。。。')
    3 except Exception as e:
    4     print e

    自定义异常

     1 class test(Exception):
     2  
     3     def __init__(self, msg):
     4         self.message = msg
     5  
     6     def __str__(self):
     7         return self.message
     8  
     9 try:
    10     raise test('我的异常')
    11 except test as e:
    12     print(e)

    断言

    在 unittest 单元测试框架中,TestCase 类提供了一些方法来检查并报告故障,如下图 :

     1 #!/usr/bin/env python
     2 #coding=utf-8
     3 __author__ = 'yinjia'
     4 
     5 try:
     6      num = input("Enter a number:")
     7      assert (num == 10), "The number is not 10!"
     8 except AssertionError as msg:
     9      print(msg)
    10      print ("Sadly, num not equals to 10")

     

  • 相关阅读:
    标准函数头部注释
    排序
    #define _INTSIZEOF(n)
    并发编程资料
    memory model
    Ubuntu搜狗输入法的使用
    gprof
    xml_editor
    创建本地Ubuntu镜像
    设计模式9:建造者模式
  • 原文地址:https://www.cnblogs.com/yinjia/p/8631392.html
Copyright © 2020-2023  润新知