Interesting approach, thanks, but I think that we should stay with the currently implemented scheme.

Otherwise, I'd end up creating a customised exception to raise, as no built-in exception is really that suitable. I guess we could opt to raise a ```ValueError```. Anyways, I tend to err on the side of only raising an exception to flag a fault. A ```Cube``` that doesn't fit a ```ProtoCube``` isn't a fault, it's just different/not a match. I don't think we should elevate it's importance just to use the exception paradigm.

If you really feel the try-except-else approach is cleaner, I'm happy to debate the point.