在程序开发中,如果对某些代码的执行不能确定(程序语法完全正确)
可以增加try来捕获异常
try这个关键字来捕获异常
try:尝试执行的代码
except:出现错误的处理
def func():
try:
print(a)
except NameError as e1:
with open('error.txt','w') as f:
f.write(str(e1))
func()
完善写法:在函数中捕获某个异常,然后将异常的具体信息写入error1.txt文件中
try: # 可能出错的地方 num=int(input('请输入一个整数:')) result1=8/num print(result1) except ValueError as e1: print('输入的不是合法的整数') with open('error1.txt', 'w') as f: f.write(str(e1)) except ZeroDivisionError as e2: print('除数不为0') with open('error2.txt', 'w') as f: f.write(str(e2)) except Exception as e: print('未知错误 %s' % (r)) finally: # 无论是否有异常都会执行的代码 print('程序结束.....')
代码截图:
error.1.txt
扩展学习:
1.练习
try:
# 不能确定正确执行的代码
num = int(input('请输入一个数字:'))
except:
print('请输入正确的整数')
print('*' * 10)
2. 提示用户输入一个整数,并使用8来除以用户输入的整数
try:
# 可能出错的地方 num = int(input('请输入一个整数:')) result = 8 /num print(result)
# 抛出异常 except ZeroDivisionError: print('0不能做除数') except ValueError: print('输入的值不是合法的整数') except Exception as r: print('未知错误 %s' %(r)) finally: # 无论是否有异常,都会执行的代码 print('--------------')
3.异常的传递
def demo1(): return int(input('请输入整数:')) def demo2(): return demo1() # 一级一级的去找,最终会将异常传递到主函数里 try: print(demo2()) except Exception as r: print('未知错误 %s' %r)
代码截图:
4.补充完善上述 2,增加func()方法、while True循环当达到满足的数据程序结束 ,如果不满足继续输入....
def func():
while True: # 无限循环
try:
a=int(input('请输入一个整数:'))
# print('success')
result1=6/a
print(result1)
print('程序结束....')
break # 输入正确的整数结束循环
except ZeroDivisionError as e1:
print('除数不为0!:'+str(e1))
except ValueError as e2:
print('输入的非整数!:'+str(e2))
finally:
print('......................................')
func()
相关链接:https://blog.csdn.net/weixin_44828950/article/details/91471459