The ideal of scripting languages is a comfortable buffer from the tedious intricacies of lower-level programming.
There's hardly any point to automating type coercion and memory management if that automation is broken.

So in a perfect world, all errors triggered by script would be caught by the scripting engine, which would provide a more graceful degradation than just a hard crash. Bonus points where it can also provide at least a hint as to what our script did to trigger the error.
But that is of course just an ideal. In our imperfect world, where all software is made by an imperfect species, imperfections are inevitable.
A perfect circle exists only in the mind of a mathematician. In the natural universe forces interact, however subtly, to alter the circle into a form deviating at least somewhat from its mathematical definition.
And so it is with software. While ideally no scripting engine should ever crash, in practice sooner or later all of them do. All nontrivial software always has bugs.
When we encounter the inevitable bug we report it to the maintainers, and bit by bit the software is hoped to reach ever closer to the ideal, even if the true ideal cannot be reached.
Like a smart product manager I used to work with back in the '90s was fond of saying, "Let's aim high. The problem with aiming low is you're likely to hit your target."
