почему мой JScript (хост скрипта Windows) завершается с 0 в необработанном исключении? - PullRequest
3 голосов
/ 07 апреля 2009

У меня есть JScript, который делает некоторые вещи с подключением ODBC. Исключение было вызвано объектом ODBC ActiveXObject и не было обнаружено в моем сценарии. Я ожидал, что скрипт выйдет с ненулевым значением, но это не так. Кто-нибудь знает, почему это так, и как заставить его завершиться с ненулевым значением в необработанном исключении?

1 Ответ

2 голосов
/ 07 апреля 2009

Механизм JScript можно рассматривать как виртуальную машину. Если бы сам движок JScript или хост скрипта имели какую-либо форму катастрофического сбоя, вы могли бы ожидать получить ненулевой код выхода (например, хост скрипта не смог найти одну из необходимых ему DLL).

Однако, если программа-скрипт, запускаемая на этой «ВМ», выдает исключение, даже необработанное, которое не является отказом в двигателе или хосте.

Что вы можете сделать, это поместить весь скрипт в блок try, а затем просто выбросить исключение в catch. Скриптовый движок будет обрабатывать это выброшенное исключение точно так, как вы хотели обработать оригинал: -

try
{

  // the rest of your script

}
catch(e)
{
  throw(e);  // returns nonzero exit code
}
...