为了账号安全,请及时绑定邮箱和手机立即绑定

在其功能之外拾取异常

在其功能之外拾取异常

红颜莎娜 2022-07-05 15:40:32
我有一个基于文本的程序,它在“while True:”样式循环中使用菜单和子菜单。您可以通过顶部菜单进入子菜单 - 已编辑以包含代码。输出如下所示:1 Collect Attachments2 View Senders3 Edit Senders4 QuitChoose an option: 1Chose Collect AttachmentsEnter a date dd-mm-yyyy: 21-01-2020Enter how many days previous to search through: 7Your search starts from 2020-01-21 00:00:00 and ends on 2020-01-140 Search Any1 Hazel Blue2 Duo Security3 Esker Australia Pty Ltd4 iiNet Billing Team5 TeamViewer Sales6 ple.com.au Gnangara Warehouse Team7 info@thereceptionist.com.au8 Amazon Web ServicesThere are 9 options.Choose a sender (blank to exit):You did not enter a valid number (ValueError)问题是 ValueError 不应该出现在子菜单中。这都是自学的,所以我想我不明白异常处理是如何完成的。
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

这是问题:


>>> int("")

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: invalid literal for int() with base 10: ''

因此,当您在子菜单中说“空白退出”时,您应该:


在转换为数字之前检查空字符串

只使用字符串

顺便说一句,学习logging包并logging.exception在抑制异常时使用通常很有用。


此外,try您使用的涵盖数十行代码的大型子句通常不受欢迎,因为它很容易捕获意外异常,然后您已经注意到很难调试它。您通常应该尽可能地限制您的try条款,当然您的里程可能会有所不同。


查看完整回答
反对 回复 2022-07-05
?
四季花海

TA贡献1811条经验 获得超5个赞

如果在 topMenu 中生成任何异常,您可以尝试此操作,那么它将不会进入子菜单,否则它将进入子菜单并执行操作。


def main():

     def topMenu():

            while True:

                try:

                    # code if generate exception

                    subMenu()


                # you can fetch specific exception or general

                except Exception as e:

                    print(e)



        def subMenu():

            print("in submenu")

            # code here...  

        topMenu()

 main()


查看完整回答
反对 回复 2022-07-05
  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号