Skip to content

[Feature] 请求完善下载过程中的异常上报机制 #409

Description

@softmanmaker

新功能请求

之前报过一个api接口实现貌似有误的bug,然后前几天清明回老家没办法debug,现在回来debug了一下发现另有原因。
其实不是实现错误,而是异常没有被捕获上报。
我的代码中有如下片段:

def packaged_download_album(option: PackagedJmOption, album: jmcomic.JmAlbumDetail):
    try:
        with jmcomic.new_downloader(option.html) as dler:
            client = dler.client_for_album(album.album_id)
            dler.download_by_album_detail(album, client)
    except Exception:
        print("[jmcomic]下载本子:html接口失败,切换至api接口")
        with jmcomic.new_downloader(option.api) as dler:
            client = dler.client_for_album(album.album_id)
            dler.download_by_album_detail(album, client)

其中,在执行到html接口的dler.download_by_album_detail(album, client)语句时,调用了JmDownloader类中的execute_by_condition。在我的情况(下载495704)下,其调用multi_thread_launcher创建了一个线程,而这个线程无法获取本子信息,因此抛出异常。由于这个异常是被线程抛出的,所以没有被正常捕获,直接报错。与此同时,packaged_download_album没有捕捉到这个异常,因此直接跳过了except部分,导致api接口完全未被调用。
我目前的想法是,让创建线程的函数对线程的异常进行捕获和集中上报,提供给调用者处理。不过这部分的实现都是对库的修改,所以提了issue。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions