赞
踩
异常和异常类
- >>> print("我爱山大"}
- SyntaxError: invalid syntax
- >>> 1/0
- ZeroDivisionError: division by zero
- >>> from math import sqrt
- >>> a=1;b=2;c=3
- >>> x1=-b+sqrt(b**2-4*a*c)/2*a
- math domain error
- (1)NameError。尝试访问一个未申明的变量。
- >>> noname #报错。NameError: name 'noname' is not defined
- (2)SyntaxError。语法错误。
- >>> int a #报错。SyntaxError: invalid syntax
- (3)AttributeError。访问未知对象属性。
- >>> a=1
- >>> a.show() #报错。AttributeError: 'int' object has no attribute 'show'
- (4)TypeError。类型错误。
- >>> 11 + 'abc' #报错。TypeError: unsupported operand type(s) for +: 'int' and 'str'
- (5)ValueError。数值错误。
- >>> int('abc') #报错。ValueError: invalid literal for int() with base 10: 'abc’ (6)ZeroDivisionError。零除错误。
- >>> 1/0 #报错。ZeroDivisionError: division by zero
- (7)IndexError。索引超出范围。
- >>> a=[10,11,12]
- >>> a[3] #报错。IndexError: list index out of range
- (8)KeyError。字典关键字不存在。
- >>> m = {'1':'yes', '2':'no'}
- >>> m['3'] #报错。KeyError: '3'
异常名称
|
描述
|
ZeroDivisionError
|
除
(
或取模
)
零
(
所有数据类型
)
|
NameError
|
未声明
/
初始化对象
(
没有属性
)
|
SyntaxError
|
解释器发现语法错误
|
IndexError
|
序列中不存在的索引
|
KeyError
|
使用映射中不存在的键
|
FileNotFoundError
|
试图打开不存在的文件
|
AttributeError
|
尝试访问未知对象属性
|
IndentationError
|
缩进错误
|
TabError
|
Tab
和空格混用
|
ImportError
|
导入模块
/
对象失败
|
IOError
|
输入
/
输出操作失败
|
AssertionError
|
断言语句失败
|
- >>> 1/0
- Traceback (most recent call last):
- File "<pyshell#0>", line 1, in <module> 1/0
- ZeroDivisionError: division by zero
- #实例
- >>> if a<0: raise ValueError("数值不能为负数")
raise IndexError
- Traceback (most recent call last):
- File "<pyshell#0>", line 1, in <module>
- raise IndexError
- IndexError
通过显示地创建异常类的对象, 直接使用对象来引发异常。
index = IndexError()raise index
- Traceback (most recent call last):
- File "<pyshell#3>", line 1, in <module>
- raise index
- IndexError
raise IndexError("索引下标超出范围")
- Traceback (most recent call last):
- File "D:/异常.py", line 1, in <module>
- raise IndexError("索引下标超出范围")
- IndexError: 索引下标超出范围
- try:
- num1 = input('请输入第1个数:')
- num2 = input('请输入第2个数:')
- print(int(num1)/int(num2))
- # 放在所有except语句最后
- except Exception as result:
- print('捕获到异常:%s'%result)
- try:
- num1 = input("请输入第1个数:")
- num2 = input("请输入第2个数:")
- print(int(num1)/int(num2))
- except Exception as result:
- print("捕捉到异常:%s"%result)
- else:
- print("程序正常运行,没有捕捉到异常")
创建一个继承Exception类的子类,就是自定义异常类。
当遇到自己设定的错误时,使用raise语句抛出自定义的异常。
- class ShortInputException(Exception):
- def __init__(self, length, atleast):
- Exception.__init__(self)
- self.length = length
- self.atleast = atleast
- try:
- s = input('请输入 --> ')
- if len(s) < 3:
- raise ShortInputException(len(s), 3)
- except EOFError:
- print ('你输入了一个结束标记EOF')
- except ShortInputException as x:
- print ('ShortInputException: 长度是 %d, 至少应是 %d' % (x.length, x.atleast))
- else:
- print ('没有异常发生.')
assert 布尔表达式 ,<描述性字符>||Vif not 布尔表达式:raise AssertionError(<描述性字符串>)
- >>> a = 0
- >>> assert a!=0,"a的值不能为0"
- Traceback (most recent call last):
- File "D:/异常.py", line 2, in <module> assert a!=0,"a的值不能为0"
- AssertionError: a的值不能为0
实例
- >>> if 1>2
- SyntaxError: invalid syntax
- >>> x
- NameError: name 'x' is not defined
- >>> f=open("123.txt")
- FileNotFoundError: [Errno 2] No such file or directory: '123.txt'
- >>> 123+"abc"
- TypeError: unsupported operand type(s) for +: 'int' and 'str'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。