A program should only hard crash if you want it to.
Whilst we don’t want to be wrapping try catches around everything if you feel there is a place in your code that could throw an exception, it is a good idea to handle it yourself using a try/catch or some other bespoke solution,
It is not great to just let the program explode on its own.
Asserts are good for development to help you debug software, but really, you shouldn’t ship with Asserts. Even though you are causing the software to throw an exception yourself, it is not really handled.