Python异常处理和异常类型


python2.x捕获异常语法:

try:
    ...some functions...
except Exception, e:
    print(e)

python3.x捕获异常语法:

try:
    ...some functions...
except Exception as e:
    print(e)

注意这里 Exception, e 变成了 Exception as e

python常见的异常类型

1. NameError:尝试访问一个未申明的变量

>>> v
NameError: name 'v' is not defined

2. ZeroDivisionError:除数为0

>>> v = 1/0
ZeroDivisionError: int division or modulo by zero

3. SyntaxError:语法错误

int int
SyntaxError: invalid syntax (#14>, line 1)

4. IndexError:索引超出范围

List = [2]
>>> List[3]
Traceback (most recent call last):
  File "", line 1, in 
    List[3]
IndexError: list index out of range

5. KeyError:字典关键字不存在

Dic = {'1':'yes', '2':'no'}
>>> Dic['3']
Traceback (most recent call last):
  File "", line 1, in <module>
    Dic['3']
KeyError: '3'

6. IOError:输入输出错误

>>> f = open('abc')
IOError: [Errno 2] No such file or directory: 'abc'

7. AttributeError:访问未知对象属性

>>> class Worker:
 def Work():
  print("I am working")

>>> w = Worker()
>>> w.a
Traceback (most recent call last):
  File "", line 1, in 
    w.a
AttributeError: 'Worker' object has no attribute 'a'

8.ValueError:数值错误

>>> int('d')
Traceback (most recent call last):
  File "", line 1, in <module>
    int('d')
ValueError: invalid literal for int() with base 10: 'd'

9. TypeError:类型错误

>>> iStr = '22'
>>> iVal = 22
>>> obj = iStr + iVal;
Traceback (most recent call last):
  File "", line 1, in 
    obj = iStr + iVal;
TypeError: Can't convert 'int' object to str implicitly

10. AssertionError:断言错误

>>> assert 1 != 1
Traceback (most recent call last):
  File "", line 1, in <module>
    assert 1 != 1
AssertionError

11.MemoryError:内存耗尽异常

12. NotImplementedError:方法没实现引起的异常

class Base(object):
    def __init__(self):
        pass

    def action(self):
        #抛出异常,说明该接口方法未实现
        raise NotImplementedError

13. LookupError:键、值不存在引发的异常

LookupError异常是IndexError、KeyError的基类, 如果你不确定数据类型是字典还是列表时,可以用LookupError捕获此异常

14. StandardError 标准异常

除StopIteration, GeneratorExit, KeyboardInterrupt 和SystemExit外,其他异常都是StandarError的子类。

错误检测与异常处理区别在于:错误检测是在正常的程序流中,处理不可预见问题的代码,例如一个调用操作未能成功结束。

你可能感兴趣的:(Python)