Without providing an example of how to do it better, I'm not sure I see your point. Yeah, I see the problem you point out.
Consider
char *p = 0;
some complicated code that should have set p but didn't...
char c = *p; // SEGV
So do you have a way to push that error all the way back to wherever you think it should be pushed?