For gcc calling the raise method is just method call and it can't assume it won't return. If we use ```@throw``` to raise the exception gcc knows the code won't return and that className is always initialized.