Only a message at the highest exception
Cecil Westerhof
Cecil at decebal.nl
Fri Jun 28 06:17:32 EDT 2019
Chris Angelico <rosuav at gmail.com> writes:
> 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.
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
More information about the Python-list
mailing list