Last active
October 9, 2015 23:48
-
-
Save Chris2048/3598432 to your computer and use it in GitHub Desktop.
handler function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python2.7 | |
# Simple example of using a 'handler' function | |
# -- Chris2048 | |
def parseLine(line): | |
if line==True: | |
raise Exception() | |
return "foo" | |
def parseLines(lines, handler): | |
for line in lines: | |
try: | |
yield parseLine(line) | |
except Exception, e: | |
try: | |
yield handler(e, line) | |
except SkipException: | |
continue | |
one = [False, True, False] | |
def replacehandler(e, line): | |
print "Exception '%s' was thrown!" % e.__repr__() | |
if line==True: | |
return "bar" | |
print "\nwith replace:" | |
oner = parseLines(one, replacehandler) | |
print [i for i in oner] | |
class SkipException(Exception): | |
pass | |
def skiphandler(e, line): | |
print "Exception '%s' was thrown!" % e.__repr__() | |
raise SkipException() | |
print "\nwith skip:" | |
oner = parseLines(one, skiphandler) | |
print [i for i in oner] | |
def stophandler(e, line): | |
print "Exception '%s' was thrown!" % e.__repr__() | |
raise StopIteration() | |
print "\nwith stop" | |
oner = parseLines(one, stophandler) | |
print [i for i in oner] | |
class SomeException(Exception): | |
pass | |
def excepthandler(e, line): | |
print "Exception '%s' was thrown!" % e.__repr__() | |
raise SomeException() | |
print "\nwith except:" | |
try: | |
oner = parseLines(one, excepthandler) | |
print [i for i in oner] | |
except Exception as e: | |
print "Got exception '%s'!" % e.__repr__() | |
def askhandler(e, line): | |
action = raw_input("Got exception '%s',\nWhat do I do? (Skip, Return, sTop, rAise):\n" % e.__repr__()) | |
while action not in ('s','S','r','R','t','T','a','A'): | |
print "Please enter valid value!" | |
action = raw_input("Got exception '%s',\nWhat do I do? (Skip, Return, sTop, rAise):\n" % e.__repr__()) | |
if action in ('s','S'): | |
return skiphandler(e, line) | |
if action in ('t','T'): | |
return stophandler(e, line) | |
if action in ('a','A'): | |
return excepthandler(e, line) | |
if action in ('r','R'): | |
return raw_input("Replace with what?:\n") | |
print "\nwith ask:" | |
oner = parseLines(one, askhandler) | |
print [i for i in oner] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment