Only a message at the highest exception

Chris Angelico rosuav at gmail.com
Fri Jun 28 05:37:30 EDT 2019


On Fri, Jun 28, 2019 at 7:33 PM Cecil Westerhof <Cecil at decebal.nl> wrote:
>
> I have a tkinter program where I have a function generate_report which
> in a try block calls the function append_row. This function has also a
> try block. When they get an exception they give message. But when
> append_row has already given a message then generate_report should
> not. To implement this I use the following class:
>     class AlreadyHandledException(Exception):
>         pass
>
> Then in append_row I have:
>     except Exception as err:
>         messagebox.showerror(error_str,
>                              error_append + '\n\n\n\n' + str(err))
>         raise AlreadyHandledException()
>
> And in generate_report I have:
>     except Exception as err:
>         if type(err).__name__ != "AlreadyHandledException":
>             messagebox.showerror(error_str,
>                                  error_generate + '\n\n\n\n' + str(err))
>         progress.pack_forget()
>
> Is this an acceptable way, or should I do it differently?
>

Well, first off, I would use two separate except clauses, rather than
a type check. But are you able to just NOT catch the exception inside
append_row? Let it be handled at the top level only.

ChrisA



More information about the Python-list mailing list