Пользовательский тип исключительной ситуации

216
задан Alexander Abakumov 26 September 2019 в 11:43
поделиться

4 ответа

Вы могли реализовать свои собственные исключения и их обработку, например, как здесь:

// define exceptions "classes" 
function NotNumberException() {}
function NotPositiveNumberException() {}

// try some code
try {
    // some function/code that can throw
    if (isNaN(value))
        throw new NotNumberException();
    else
    if (value < 0)
        throw new NotPositiveNumberException();
}
catch (e) {
    if (e instanceof NotNumberException) {
        alert("not a number");
    }
    else
    if (e instanceof NotPositiveNumberException) {
        alert("not a positive number");
    }
}

существует другой синтаксис для ловли введенного исключения, хотя это не будет работать в каждом браузере (например, не в IE):

// define exceptions "classes" 
function NotNumberException() {}
function NotPositiveNumberException() {}

// try some code
try {
    // some function/code that can throw
    if (isNaN(value))
        throw new NotNumberException();
    else
    if (value < 0)
        throw new NotPositiveNumberException();
}
catch (e if e instanceof NotNumberException) {
    alert("not a number");
}
catch (e if e instanceof NotPositiveNumberException) {
    alert("not a positive number");
}
79
ответ дан Lorenzo Polidori 23 November 2019 в 04:18
поделиться

Да. Можно бросить что-либо, что Вы хотите: целые числа, строки, объекты, безотносительно. Если Вы хотите бросить объект, то просто создают новый объект, как Вы создали бы один при других обстоятельствах, и затем бросать его. ссылка JavaScript Mozilla имеет несколько примеров.

39
ответ дан Rob Kennedy 23 November 2019 в 04:18
поделиться

Используйте бросок оператор.

JavaScript не заботится о том, что тип исключительной ситуации (как Java делает). JavaScript просто замечает, существует исключение и когда Вы ловите его, можно "посмотреть", что "говорит" исключение.

, Если бы у Вас есть различные типы исключительной ситуации, необходимо бросить, я предложил бы использовать переменные, которые содержат строку/объект исключения т.е. сообщения. Где Вам нужен он, использование "бросает myException" и в выгоду, сравнивает перехваченную исключительную ситуацию с myException.

5
ответ дан Community 23 November 2019 в 04:18
поделиться

Из WebReference :

throw { 
  name:        "System Error", 
  level:       "Show Stopper", 
  message:     "Error detected. Please contact the system administrator.", 
  htmlMessage: "Error detected. Please contact the <a href=\"mailto:sysadmin@acme-widgets.com\">system administrator</a>.",
  toString:    function(){return this.name + ": " + this.message;} 
}; 
223
ответ дан 23 November 2019 в 04:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: