【问题标题】:Cannot catch error, it is instead printed to the console无法捕获错误,而是打印到控制台
【发布时间】:2021-01-12 21:32:49
【问题描述】:

我正在检测外部 IP 是否已更改为 miniupnpc。在我的测试过程中,我注意到当我关闭 Wi-Fi(断开我的电脑与互联网的连接)时,我收到了一个我无法捕获的错误。

它似乎打印到控制台。

u = miniupnpc.UPnP()
u.discoverdelay = config.svc_upnp_disc_delay

try:
    discover = u.discover()
    print(discover, 'device(s) detected')

    if discover:
        u.selectigd()

        while True:
            stat_info, stat_port, stat_error = u.statusinfo()
            if stat_info == 'Connected':

                if u.lanaddr != os.environ.get(config.envr_name_int_addr):
                    os.environ[config.envr_name_int_addr] = u.lanaddr

                ext_ip = u.externalipaddress()
                if ext_ip != os.environ.get(config.envr_name_ext_addr):
                    os.environ[config.envr_name_ext_addr] = ext_ip

                print('+', end=' ', flush=True)

            else:
                print('-', end=' ', flush=True)
                if stat_info != os.environ.get(config.envr_svc_status):
                    os.environ[config.envr_svc_status] = stat_info

            time.sleep(5)

except Exception as e:
    print('Exception :', e)

这是错误:

sendto: Network is unreachable
sendto: Network is unreachable
sendto: Network is unreachable
sendto: Network is unreachable

有什么方法可以捕捉到这一点,以便将其记录在日志文件而不是控制台中?

首先是什么导致它...因为我没有打印它?

【问题讨论】:

  • 首先,异常的根源是什么?可能是包本身处理了自己的异常。你有任何追溯吗?

标签: python python-3.x upnp miniupnpc


【解决方案1】:

记录 4 个错误的事实表明您的 try...except 块可能无法正常工作。

尝试在您的 except 子句中使用 BaseException 而不是 Exception。

【讨论】:

  • 试过了。也没有捕捉到任何东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 2013-02-05
  • 2011-05-11
  • 2021-08-24
  • 2021-02-17
  • 1970-01-01
相关资源
最近更新 更多