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

Reply via email to