Been up late, so I looked around...
I think what may be confusing is my referencing just exception handling. In my mind, I bundle crash reporting with exception handling. I don't independently list each one. The reason I don't is because it just makes sense that you'd do a crash report when you attempt to handle exceptions.
Exceptions, by definition, should be "exceptional", meaning that they are rare events.
Error conditions / status codes / return codes are NOT what I'm talking about when I talk about exception handling.
Your unaligned memory access is an exception. It is an error condition, but notably it is an exception. More specifically, it is an unhandled exception, which means that it leads to a crash.
Handling exceptions does not necessarily mean allowing the application to continue. Yes, you can write code to swallow the exceptions, but that's not good practice. Other issues may come up later due to not properly cleaning up after the exception.
Contrary to what seems to be believed, you can get valuable information by handling an exception and generating a crash report. If there was no use for this, I don't think there'd be as many books on the subject....
Lastly, I ran across a comment about how no matter how "clean" of an exit a hard application crash is, it is highly user unfriendly and generally should not be done. It leaves the user scratching their head. They will typically try over and over, and then get frustrated with you and your software.
I know this goes against your previous experience, but maybe you might take a look into doing things differently. As you are obviously trying to add a lot of commercial features, hard crashing the app and leaving users frustrated is probably not the most strategic approach to long-term economic viability and success.
The Intel AppUp SDK seems to have a very nice crash reporting mechanism. The only gotcha is that it requires usage of either Visual Studio or Eclipse.