The appropriate goal is not to make your application "crash free" but to make your application reliable and stable.
It may be possible to reduce or even virtually eliminate crashes with exception handling. However, all other things being equal, this will simply replace crashes with cases in which the program enters an unusable state.
This isn't going to look any better to your users. In fact, it will very likely be worse. At least a crash is a clear, clean failure. A program in a non-functioning state is ambiguous at best. The user may waste a long time to see if the application is frozen or just "thinking". At worst it may actually do damage, continuing to perform actions, but in a corrupt manner.
There is no shortcut to writing good, reliable code.