Usually I create an empty instance with newException, assign field values, then call `raise`.
I don’t understand the need for newException, to be honest. Why are exceptions special this way? I should be able to declare an exception subclass as ref, then instantiate one normally and raise it. But that produces an error.