Is there a reason to override __init__ and __str__ here? Exception's defaults seem OK to me