Handling an connection error with Twython
MRAB
python at mrabarnett.plus.com
Fri May 24 11:51:26 EDT 2019
On 2019-05-24 09:25, Cecil Westerhof wrote:
> Dennis Lee Bieber <wlfraed at ix.netcom.com> writes:
>
>> On Fri, 24 May 2019 07:49:23 +0200, Cecil Westerhof <Cecil at decebal.nl>
>> declaimed the following:
>>
>>>
>>>I did not do that consciously, because I have to try until it is
>>>successful an I return, or I reached the max tries and re-raise the
>>>exception. With a for loop I could exit the loop and cannot re-raise
>>>the exception.
>>
>> Your /success/ branch exits the loop by executing a "return" statement.
>>
>> Your /fail/ branch exits the loop by "raise" on the third failure.
>>
>> A "for" loop would have the same behavior; you just replace the manual
>> initialization and increment of the loop counter.
>>
>> for tries in range(max_try):
>> try:
>> do something
>> return successful
>> except stuff:
>> if tries+1 == max_try: #since range is 0..max_try-1
>> raise
>>
>> You never "fall off the end" of the loop.
>
> That is true, but by using a 'while True:' loop it is clear you never
> fall off the end of the loop. I find this much clearer. And when there
> is a bug you get into an endless loop instead of fall of the end.
> Which in my opinion is easier to spot and mend. And endless loop is
> noticed the moment it goes wrong. Falling of the end could go without
> an error and will be spotted much later.
>
You could print a message or raise an exception after the 'for' loop so
that if it ever falls off the end of the loop you'll get a nice message
instead of it just looping forever! :-)
More information about the Python-list
mailing list