Make the copy assignment operator of Exception class exception safe

Exception object would be in unstable state when the `clone()` call throws an exception, so I moved it prior to object member updates so when exception was thrown, members of `*this` would remain untouched.