python异常处理
把有可能发生的异常放在try里面,通过except捕获异常,给出解决方案,不发生异常的语句放在else里面,异常不管是否发生,都要放在finally语句里
1.异常描述
异常 | 描述 |
---|---|
NameError | 未声明/初始化对象 |
INdexError | 序列中没有此索引 |
SyntaxError | 语法错误 |
KeyboardInterr | 用户中断执行(ctrl+c) |
EOFError | 没有内建输入,到达EOF标记(ctrl+d) |
2.try-expect语句
try:
n = int(input('number:'))
except ValueError as mm:
print('无效的数据:', mm)
except KeyboardInterrupt:
print('\nbyebye')
exit()
except EOFError:
print('\nbyebye')
exit()
#程序不发生异常的时候,才会执行的语句
else:
print(n)
#不管异常是否发生,finally的语句都会执行
#finally有啥用,如果打开文件后,出现异常了,这个异常我们没有预料到,
#为了确保数据安全,我们可以在finally中关闭文件,执行关闭文件的操作
finally:
print('Done')
#或者把多个except写在同一行
#except (KeyboardInterrupt, EOFError):
3.除法简化案例
- 提示用户输入一个数字作为除数
- 如果用户按下ctrl+c或ctrl+d则退出程序
- 如果用户输入非数字字符,提示用户应该输入数字
try:
n = int(input('请输入数字吧:'))
result = 100 / n
except (ValueError, ZeroDivisionError) as e:
print('无效的输入:', e)
except (KeyboardInterrupt,EOFError):
print('\nByebye!')
exit()
else:
print(result)
finally:
print('Done!')