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...
This commit is contained in:
jack1142 2022-04-09 20:49:45 +02:00 committed by GitHub
parent 02c0328002
commit 6cb2378e2e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 9 deletions

View File

@ -286,7 +286,6 @@ def early_exit_runner(
asyncio.set_event_loop(None) asyncio.set_event_loop(None)
loop.stop() loop.stop()
loop.close() loop.close()
sys.exit(0)
async def run_bot(red: Red, cli_flags: Namespace) -> None: async def run_bot(red: Red, cli_flags: Namespace) -> None:
@ -546,8 +545,8 @@ def main():
asyncio.set_event_loop(None) asyncio.set_event_loop(None)
loop.stop() loop.stop()
loop.close() loop.close()
exit_code = red._shutdown_mode if red is not None else 1 exit_code = red._shutdown_mode if red is not None else 1
sys.exit(exit_code) sys.exit(exit_code)
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -424,15 +424,13 @@ class Case:
self.guild.id, self.guild.id,
) )
await self.edit({"message": None}) await self.edit({"message": None})
except Exception: # `finally` with `return` suppresses unexpected exceptions except Exception:
log.exception( log.exception(
"Modlog failed to edit the Discord message for" "Modlog failed to edit the Discord message for"
" the case #%s from guild with ID %s due to unexpected error.", " the case #%s from guild with ID %s due to unexpected error.",
self.case_number, self.case_number,
self.guild.id, self.guild.id,
) )
finally:
return None
async def message_content(self, embed: bool = True): async def message_content(self, embed: bool = True):
""" """
@ -1071,15 +1069,14 @@ async def create_case(
"Modlog failed to edit the Discord message for" "Modlog failed to edit the Discord message for"
" the case #%s from guild with ID due to missing permissions." " the case #%s from guild with ID due to missing permissions."
) )
except Exception: # `finally` with `return` suppresses unexpected exceptions except Exception:
log.exception( log.exception(
"Modlog failed to send the Discord message for" "Modlog failed to send the Discord message for"
" the case #%s from guild with ID %s due to unexpected error.", " the case #%s from guild with ID %s due to unexpected error.",
case.case_number, case.case_number,
case.guild.id, case.guild.id,
) )
finally: return case
return case
async def get_casetype(name: str, guild: Optional[discord.Guild] = None) -> Optional[CaseType]: async def get_casetype(name: str, guild: Optional[discord.Guild] = None) -> Optional[CaseType]: