В общем случае. Не в try-catch же проверку заворачивать.
В качестве примера:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type="text/javascript">
window.addEventListener('load', function(){
var ele = document.getElementById('test')
alert('"selectionStart" in ele: ' + ('selectionStart' in ele));
alert('ele.selectionStart: ' + ele.selectionStart);
}, false);
</script>
</head>
<body>
<input type="file" id="test">
</body>
</html>
Несмотря на то, что «selectionStart in ele» выдаёт true, обращение к этому свойству даёт:
Ошибка: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLInputElement.selectionStart]" nsresult: "0x80004005 (NS_ERROR_FAILURE)"