The most common strategy in javascript is to write defensively and test thoroughly.
e.g. there are libraries that start at square one with test similar to:
var element;
if (document && document.getElementById) {
element = document.getElementById('foo');
}
if (element) {
// use element
}
but written in a more generic format with tests like isHostMethod.
Employ try..catch only as a last resort where feature detection or other defences aren't available. Testing host objects sometimes returns useless results or may even throw errors (e.g. all XMLHttpRequest scripts use try..catch because testing for support in IE is inconclusive so the only option is to just call it and see what happens).
Minor script errors aren't much of an issue as most browsers won't show them by default. Most non–trivial pages throw errors all the time (including SO) depending on things like the browser, settings and user's network environment. Users are just denied functionality that they may or may not be aware they are missing (and may actually benefit from). Hence a typical strategy is to make we pages functional without any script, then add script features to enhance usability. That way there is always a fallback to basic functionality if an error occurs that might otherwise prevent the page being useful.
This strategy may not always be possible, but it's a good starting point and should not be abandoned lightly.