吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1260|回复: 10
收起左侧

[求助] python捕获不了异常,大佬帮忙看看

[复制链接]
爱吃布林的我 发表于 2020-11-3 15:46
本帖最后由 爱吃布林的我 于 2020-11-3 16:54 编辑

因为要显示消息桌面提醒,需要调用托盘图标和右下角桌面提醒。
当程序调用托盘消息跟气泡提醒失败时,程序会正常运行往下走,会抛出异常消息
但是现在按照我的理解却无法抓取到这个异常
这个无法显示托盘图标可以通过重启资源管理器解决,但是他捕获不了异常,我就不能给他重启资源管理器。就很烦
我的代码如下:
[Python] 纯文本查看 复制代码
from plyer import notification

try:
    notification.notify(
        title="有新的消息",
        app_name="1234",
        message="新消息!!!",
        app_icon="icon.ico",
        timeout=5
    )
    print('异常没抓到')
except Exception:
    print('抓到了异常')
else:
    print('正常运行')


异常运行结果如下:
[Python] 纯文本查看 复制代码
异常没抓到
正常运行
Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Users\93520WZ\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\93520WZ\AppData\Local\Programs\Python\Python38\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\93520WZ\AppData\Local\Programs\Python\Python38\lib\site-packages\plyer\platforms\win\libs\balloontip.py", line 208, in balloon_tip
    WindowsBalloonTip(**kwargs)
  File "C:\Users\93520WZ\AppData\Local\Programs\Python\Python38\lib\site-packages\plyer\platforms\win\libs\balloontip.py", line 141, in __init__
    self.notify(title, message, app_name)
  File "C:\Users\93520WZ\AppData\Local\Programs\Python\Python38\lib\site-packages\plyer\platforms\win\libs\balloontip.py", line 190, in notify
    raise Exception('Shell_NotifyIconW failed.')
Exception: Shell_NotifyIconW failed.

Process finished with exit code 0


根据错误提示找到了这个,但是他这个也是写着Exception啊,这我就不懂了
[Python] 纯文本查看 复制代码
    def notify(self, title, message, app_name):
        '''
        Displays a balloon in the systray. Can be called multiple times
        with different parameter values.
        '''
        # remove previous visible balloon tip nofitication if available
        self.remove_notify()

        # add icon and messages to window
        hicon = self._hicon
        flags = NIF_TIP | NIF_INFO
        icon_flag = 0

        if hicon is not None:
            flags |= NIF_ICON

            # if icon is default app's one, don't display it in message
            if self._balloon_icon is not None:
                icon_flag = NIIF_USER | NIIF_LARGE_ICON

        notify_data = win_api_defs.get_NOTIFYICONDATAW(
            0, self._hwnd,
            id(self), flags, 0, hicon, app_name, 0, 0, message,
            NOTIFYICON_VERSION_4, title, icon_flag, win_api_defs.GUID(),
            self._balloon_icon
        )

        self._notify_data = notify_data
        if not win_api_defs.Shell_NotifyIconW(NIM_ADD, notify_data):
[color=#ff0000]            raise Exception('Shell_NotifyIconW failed.')[/color]
        if not win_api_defs.Shell_NotifyIconW(NIM_SETVERSION,
                                              notify_data):
[color=#ff0000]            raise Exception('Shell_NotifyIconW failed.')[/color]

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

senooo 发表于 2020-11-3 16:28
本帖最后由 senooo 于 2020-11-3 16:30 编辑

    app_icon="icon.ico",timeout=5)#目测你一行的缩进有问题吧,已经超出except的范围。
Rezalt 发表于 2020-11-3 16:38
app_icon这个参数的问题 检查一下图片的格式。图片有问题
 楼主| 爱吃布林的我 发表于 2020-11-3 16:51
senooo 发表于 2020-11-3 16:28
app_icon="icon.ico",timeout=5)#目测你一行的缩进有问题吧,已经超出except的范围。

这个是排版时没检查导致的,已更正,并不是这个问题导致的
 楼主| 爱吃布林的我 发表于 2020-11-3 16:53
Rezalt 发表于 2020-11-3 16:38
app_icon这个参数的问题 检查一下图片的格式。图片有问题

排版导致的,图片是能正常显示的哈。还能看出有其他问题吗?
Rezalt 发表于 2020-11-3 17:21
爱吃布林的我 发表于 2020-11-3 16:53
排版导致的,图片是能正常显示的哈。还能看出有其他问题吗?

你的代码复制了一份下来直接运行随便换上一个图标都是ok的 没毛病 其他参数基本不会影响程序的运行,唯一能够出问题的也就是在图标上面了
Rezalt 发表于 2020-11-3 17:24
Rezalt 发表于 2020-11-3 17:21
你的代码复制了一份下来直接运行随便换上一个图标都是ok的 没毛病 其他参数基本不会影响程序的运行,唯一 ...

你用百度的试试看呗
sjh52pojie 发表于 2020-11-3 18:44
python不太懂的说,是不是函数参数调用的跟声明的不一致?包括顺序?
莫莫大侠 发表于 2020-11-3 19:59
这个函数调用了子线程,开辟一条新的栈,所以主线程方法的栈因此无法捕获到这一异常。 所以应该在子线程中处理异常。或者在子线程中设置flag标志位,在主线程中判断这个来捕获是否异常。
syz17213 发表于 2020-11-3 21:08
来看下是怎么回事
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 12:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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