httpcore icon indicating copy to clipboard operation
httpcore copied to clipboard

Catch exception if close() in exception manager, throw another except…

Open pprados opened this issue 6 months ago • 1 comments

Given this is a project maintained by volunteers, please read this template to not waste your time, or ours! 😁 -->

Summary

If some scenario, to close the program, the code catch en exception, and try to close itself. But, if this close generate and exception, the code crash with a stacktrace.

    async def __aiter__(self) -> typing.AsyncIterator[bytes]:
        try:
            async for part in self._stream:
                yield part
        except BaseException as exc:
            try:
                await self.aclose()
            except BaseException:
                pass
            raise exc from None

Checklist

  • [ ] I understand that this PR may be closed in case there was no previous discussion. (This doesn't apply to typos!)
  • [ ] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • [ ] I've updated the documentation accordingly.

pprados avatar Jun 25 '25 12:06 pprados

https://peps.python.org/pep-0008 contains clear advice to avoid catching BaseException. Why should that be ignored?

  • https://docs.astral.sh/ruff/rules/bare-except
  • https://docs.astral.sh/ruff/rules/blind-except

cclauss avatar Sep 03 '25 09:09 cclauss