Interesting method for doing this.  A little unsure about using exceptions in this way, but let's try it out!