异常
异常操作步骤
try: 执行代码
except: 发生异常时执行代码
else: 未发生异常时执行代码
finally: 最后不管有没有异常都会执行的代码
异常的种类
- 值异常: ValueError
- 键盘中断异常: KeyboardInterrupt
- 文件操作异常: OSError, IOError
- 除0异常: ZeroDivisionError
- 自定义异常类: Exception
同时处理多个异常
except (RuntimeError, TypeError, NameError):
pass
抛出异常
异常类:Exception
抛出关键字: raise
使用raise触发异常
raise Exception(异常内容)
这里Exception(异常内容)表示一个异常的实例或子类如ValueError
在判断需要抛出异常的地方加入抛出,如:
try:
a=input("请输入一个数字: ")
if a>5 :
raise Exception("数字大于5!")
要输出显示异常内容可以这样写:
except Exception, e:
print(e)
例子
代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#
import time
def main(args):
try:
a=int(input("请输入一个数字: "))
if a>5 :
raise Exception("数字大于5!")
c = a+100
print("a+100=")
print(c)
except (ValueError,NameError,SyntaxError):
print("输入不是数字!")
except KeyboardInterrupt:
print("\nctl C")
except Exception, e:
print("Exception: ")
print(e)
finally:
print("finally")
if __name__ == '__main__':
import sys
sys.exit(main(sys.argv))
输出
pi@raspberrypi:~/haitong-learning/python/homework/异常 $ python untitled.py
请输入一个数字: a
输入不是数字!
finally
pi@raspberrypi:~/haitong-learning/python/homework/异常 $ python untitled.py
请输入一个数字: 9
Exception:
数字大于5!
finally
pi@raspberrypi:~/haitong-learning/python/homework/异常 $ python untitled.py
请输入一个数字: ^C
ctl C
finally
pi@raspberrypi:~/haitong-learning/python/homework/异常 $ python untitled.py
请输入一个数字: 1
a+100=
101
finally
练习
打出a~b的素数
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#
import time
def main(args):
try:
a=int(input("请输入一个数字a: "))
b=int(input("请输入一个数字b: "))
if a>b or a<0 or b<0 :
raise ValueError
for i in range(a,b+1):
for j in range(2,i):
if i % j == 0 :
break
else:
if i not in range(0,2+1):
print(i)
except (ValueError,NameError,SyntaxError):
print("输入错误!")
except KeyboardInterrupt:
print("\nctl C")
except Exception, e:
print("Exception: ")
print(e)
finally:
print("finally")
if __name__ == '__main__':
import sys
sys.exit(main(sys.argv))