Chris Angelico <ros...@gmail.com> writes: > On Fri, Jun 28, 2019 at 7:33 PM Cecil Westerhof <ce...@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.
You are completely right. > But are you able to just NOT catch the exception inside > append_row? Let it be handled at the top level only. I am giving different messages. I changed the top part to: except AlreadyHandledException: pass except Exception as err: messagebox.showerror(error_str, error_generate + '\n\n\n\n' + str(err)) progress.lower() -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof -- https://mail.python.org/mailman/listinfo/python-list