From 6cb2378e2e2f21ca3ad438da50ce0e6de2714a06 Mon Sep 17 00:00:00 2001 From: jack1142 <6032823+jack1142@users.noreply.github.com> Date: Sat, 9 Apr 2022 20:49:45 +0200 Subject: [PATCH] Stop suppressing exceptions by early-exiting in `finally` (#5673) * Stop suppressing exceptions in entrypoints due to sys.exit in finally * Remove returns in finally in Modlog API as well... --- redbot/__main__.py | 5 ++--- redbot/core/modlog.py | 9 +++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/redbot/__main__.py b/redbot/__main__.py index 67697766d..a8ce1344e 100644 --- a/redbot/__main__.py +++ b/redbot/__main__.py @@ -286,7 +286,6 @@ def early_exit_runner( asyncio.set_event_loop(None) loop.stop() loop.close() - sys.exit(0) async def run_bot(red: Red, cli_flags: Namespace) -> None: @@ -546,8 +545,8 @@ def main(): asyncio.set_event_loop(None) loop.stop() loop.close() - exit_code = red._shutdown_mode if red is not None else 1 - sys.exit(exit_code) + exit_code = red._shutdown_mode if red is not None else 1 + sys.exit(exit_code) if __name__ == "__main__": diff --git a/redbot/core/modlog.py b/redbot/core/modlog.py index 1c55fbc96..b7606d3df 100644 --- a/redbot/core/modlog.py +++ b/redbot/core/modlog.py @@ -424,15 +424,13 @@ class Case: self.guild.id, ) await self.edit({"message": None}) - except Exception: # `finally` with `return` suppresses unexpected exceptions + except Exception: log.exception( "Modlog failed to edit the Discord message for" " the case #%s from guild with ID %s due to unexpected error.", self.case_number, self.guild.id, ) - finally: - return None async def message_content(self, embed: bool = True): """ @@ -1071,15 +1069,14 @@ async def create_case( "Modlog failed to edit the Discord message for" " the case #%s from guild with ID due to missing permissions." ) - except Exception: # `finally` with `return` suppresses unexpected exceptions + except Exception: log.exception( "Modlog failed to send the Discord message for" " the case #%s from guild with ID %s due to unexpected error.", case.case_number, case.guild.id, ) - finally: - return case + return case async def get_casetype(name: str, guild: Optional[discord.Guild] = None) -> Optional[CaseType]: