I don't see any sys.exit in your code, why catch SystemExit here. And the return value will always be 0.
You should separate the parse function out of the constructor of Parser and return non zero value in parse function if met error.