鱼C论坛

 找回密码
 立即注册
查看: 1360|回复: 10

Python中关于异常数据(try和except)

[复制链接]
发表于 2019-9-19 18:15:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
for i in range(1,5):
      try:
            print("Hi")
            asdpknuh
            print("OK")
            print("Excellent")
            print("END")
      except Exception as error:
            #continue
            print(error)
            continue


没有异常数据asdpknuh的话输出4遍Hi,OK,Excellent,END,想的是遇到异常数据asd后不影响后面输出,继续输出后面的内容,可是只能实现
Hi
name ‘asdpknuh’ is not defined
Hi
name ‘asdpknuh’ is not defined
Hi
name ‘asdpknuh’ is not defined
Hi
name ‘asdpknuh’ is not defined。
怎样才能输出下面这种预期想输出的结果?请指教,不胜感激
Hi
name ‘asdpknuh’ is not defined
OK
Exellent
END
。。。
Hi
name ‘asdpknuh’ is not defined
OK
Exellent
END
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-19 18:25:08 From FishC Mobile | 显示全部楼层
这里其实你是知道那一句可能会出错才这么写try的,一般情况是你不知道哪句可能出错,那么最保险的办法是每一句都写成try except,这种办法很麻烦...但是能实现你说的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 19:52:15 | 显示全部楼层
使用try..except...final
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 22:04:03 | 显示全部楼层
  1. try:
  2.     A
  3. except:
  4.     B
  5. else:
  6.     c
  7. finally:
  8.     D
复制代码

A 有错误接下来会运行B D
A 没错误接下来会运行C D

所以你想要语句不受异常影响,要么将语句写在D处,要不然就不要写在try中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-20 05:23:16 | 显示全部楼层
  1. for i in range(1,5):
  2.       try:
  3.             print("Hi")
  4.             asdpknuh
  5.             
  6.       except Exception as error:
  7.             
  8.             print(error)
  9.             continue
  10.       finally:
  11.             print("OK")
  12.             print("Excellent")
  13.             print("END")
复制代码

是想搞成这样吗:
Hi
name 'asdpknuh' is not defined
OK
Excellent
END
Hi
name 'asdpknuh' is not defined
OK
Excellent
END
Hi
name 'asdpknuh' is not defined
OK
Excellent
END
Hi
name 'asdpknuh' is not defined
OK
Excellent
END
是想让后面的三句一定输出吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-20 10:06:35 | 显示全部楼层
Honny_CN 发表于 2019-9-19 22:04
A 有错误接下来会运行B D
A 没错误接下来会运行C D

辛苦朋友了,但是我想说比如要执行4个输出,但是其中有一个输出有异常(假设时第2个输出异常),我不想这个异常终止了我后面的两个输出,不清楚具体如何实现,所以自己模拟假设写的上面一个程序,按朋友你说的这种方式似乎是通过try知道异常后把后面输出没有异常的数据放到else和finally里输出,不知我说的对不对,还是我没有表述清楚,请指教。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-20 19:10:20 | 显示全部楼层
912576441 发表于 2019-9-20 10:06
辛苦朋友了,但是我想说比如要执行4个输出,但是其中有一个输出有异常(假设时第2个输出异常),我不想这 ...
  1. for i in range(1,5):
  2.   print("Hi")
  3.   try:asdpknuh
  4.   except:pass
  5.   print("OK")
  6.   print("Excellent")
  7.   print("END")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-20 19:54:55 | 显示全部楼层
912576441 发表于 2019-9-20 10:06
辛苦朋友了,但是我想说比如要执行4个输出,但是其中有一个输出有异常(假设时第2个输出异常),我不想这 ...

一个比较笨的方法
每个输出都单独做一个异常判断,这样只要这个输出本身不出问题,那就不会出问题
  1. try:
  2.     print('A')
  3. except:
  4.     pass
  5. try:
  6.     print('B')
  7. except:
  8.     pass
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-21 09:27:46 | 显示全部楼层
Honny_CN 发表于 2019-9-20 19:54
一个比较笨的方法
每个输出都单独做一个异常判断,这样只要这个输出本身不出问题,那就不会出问题

对滴,朋友你理解我要表述的问题了,一个输出配一个try确实可以实现,但有点笨了这种方式,我看其它朋友回复我解决方法都是在自己已知异常的前提下对异常数据进行有选择的输出的。。。。
for i in range(1,5):
      try:
            print("Hi")
      except Exception as error:
            print(error)
      try:
            asdpknuh
      except Exception as error:
            print(error)
      try:
            print("OK")
      except Exception as error:
            print(error)  
      try:
            print("Excellent")
      except Exception as error:
            print(error)
      try:
            print("END")
      except Exception as error:
            print(error)

先从解决简单的问题开始,我就要四个输出(实际情况是大家根本不知道第二个数据异常,要求记录异常数据,同时不影响我后面的输出),
            print("Hi")
            asdpknuh
            print("OK")
            print("Excellent")
            print("END")

一种笨办法就是每个输出配一个try语句,我就想问能否有其他更简洁的方法实现,这个简单问题解决了跟我开始提出的循环输出几遍的问题也就解决了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-21 09:39:49 | 显示全部楼层
facevoid 发表于 2019-9-19 18:25
这里其实你是知道那一句可能会出错才这么写try的,一般情况是你不知道哪句可能出错,那么最保险的办法是每 ...

请问除了每一句配一个try是否有其他更简单的方式呢?明白您要表述的意思,您说的是实际情况中对可能存在问题的几个输出对应用几个try来处理,但如果出现像我说的那种情况就4个数据简单输出,每个写一个try语句有点麻烦,能否有其他更快捷的方式报出异常并且先把后面没有问题的输出执行完,请教下(这个问题仅是个人设想碰到该类情况如何处理,想询问有没有其他更好的办法解决。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-22 17:13:28 | 显示全部楼层
912576441 发表于 2019-9-21 09:39
请问除了每一句配一个try是否有其他更简单的方式呢?明白您要表述的意思,您说的是实际情况中对可能存在 ...

没有,如果每一句都可能出错还要执行后面的只能这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 07:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表