On 21/03/2016 02:04, BartC wrote:
On 21/03/2016 01:35, Chris Angelico wrote:
On Mon, Mar 21, 2016 at 12:28 PM, Mark Lawrence
<breamore...@yahoo.co.uk> wrote:
I got to line 22, saw the bare except, and promptly gave up.
Oh, keep going, Mark. It gets better.
def readstrfile(file):
try:
data=open(file,"r").read()
except:
return 0
return data
def start():
psource=readstrfile(infile)
if psource==0:
print ("Can't open file",infile)
exit(0)
So, if any exception happens during the reading of the file, it gets
squashed, and 0 is returned - which results in a generic message being
printed, and the program terminating, with return value 0. Awesome!
I don't have a clue about exceptions, but why wouldn't read errors be
picked up by the same except: block?
If you don't understand exceptions, you don't understand Python, which
prefers EAFP than LBYL. See
https://docs.python.org/3/glossary.html#term-eafp and
https://docs.python.org/3/glossary.html#term-lbyl
But I've anyway sprinkled one or two more try/excepts in there and put
some actual exception codes in. However, this readstrfile() is just
there to load the file into memory and avoid having a 200,000-line
string in the program.
Just let the exception bubble up if anything goes wrong. In most
circumstances that's far better than masking everything that could
possibly go wrong.
--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.
Mark Lawrence
--
https://mail.python.org/mailman/listinfo/python-list