So I am aware you can use try/except
blocks to manipulate the output of errors, like so:
try:
print("ok")
print(str.translate)
print(str.foo)
except AttributeError:
print("oops, found an error")
print("done")
...which gives the following output:
ok
<method 'translate' of 'str' objects>
oops, found an error
done
Now, is there a way to do the following with a while
loop, like while not AttributeError
, like this:
while not AttributeError:
print("ok")
print(str.translate)
print(str.foo)
print("done")
which would give the same output as above, just without oops, found an error
? This would reduce the need for except: pass
type blocks, which are necessary but a little pointless if you have nothing to do in the except
block.
I tried while not AttributeError
and while not AttributeError()
, which both just completely skip anything in the while
block. So, is there a way to do this in Python?
Edit: This really isn't a loop per se, but the while block would run, and continue on if it encounters an error, and just continue on if it reaches the end.
Can you try something like:
while True:
try:
print("ok")
print(str.translate)
print(str.foo)
except:
break
print('done')
The following code will loop until it encounters an error.
while True:
try:
print("ok")
print(str.translate)
print(str.foo)
except AttributeError:
print("oops, found an error")
break
print("done")
You can use suppress()
as an alternative to try/except/pass
available for python 3.4+
from contextlib import suppress
while True:
with suppress(AttributeError):
print("ok")
print(str.translate)
print(str.foo)
break
print('done')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With