Правильное использование ошибок

108

Я использую typescript для достаточно большого проекта, и мне интересно, что такое стандарт для использования Ошибок. Например, скажем, я передаю исключение индекса из пределов в Java:

throw new IndexOutOfBoundsException();

Будет ли эквивалентный оператор в typescript быть:

throw new Error("Index Out of Bounds");

Какие еще способы я мог бы выполнить? Каков приемлемый стандарт?

Теги:
exception

4 ответа

115
Лучший ответ

Кто-то разместил эту ссылку в MDN в комментарии, и я думаю, что это было очень полезно. Он очень хорошо описывает такие вещи, как ErrorTypes.

EvalError --- Создает экземпляр, представляющий ошибку, возникающую в отношении глобальной функции eval().

InternalError --- Создает экземпляр, представляющий ошибку, возникающую при вызове внутренней ошибки в JavaScript-движке. Например. "слишком много рекурсии".

RangeError --- Создает экземпляр, представляющий ошибку, которая возникает, когда числовая переменная или параметр находится за пределами ее допустимого Диапазон.

ReferenceError --- Создает экземпляр, представляющий ошибку, возникающую при удалении ссылки на недопустимую ссылку.

SyntaxError --- Создает экземпляр, представляющий синтаксическую ошибку, возникающую при анализе кода в eval().

TypeError --- Создает экземпляр, представляющий ошибку, которая возникает, когда переменная или параметр не имеют допустимого типа.

URIError --- Создает экземпляр, представляющий ошибку, которая возникает, когда encodeURI() или decodeURI() передаются недопустимые параметры.

46

Соглашение о внедиапазоне JavaScript использует RangeError. Чтобы проверить тип использования, если /else + instanceof, начиная с наиболее специфичного для самого общего

try {
    throw new RangeError();
}
catch (e){
    if(e instanceof RangeError){
        console.log('out of range');
    }
}
  • 2
    Как насчет общей ошибки? И / или где находится список встроенных классов ошибок JS?
  • 7
    В Mozilla Developer Network есть список типов ошибок JavaScript и другая информация: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Показать ещё 1 комментарий
36

Простое решение для испускания и отображения сообщения по исключению.

try {
  throw new TypeError("Error message");
}
catch (e){

  console.log((<Error>e).message);//conversion to Error type
}
  • 0
    Спасибо за указатель на явное приведение типов. Не нашел эту информацию в Typescript-Docs и кое-что узнал сегодня.
  • 0
    Вы знаете, какова цель добавления <Error>? e.message прекрасно работает для меня.
Показать ещё 1 комментарий
2

Не забудьте про операторы switch:

  • Обеспечить обработку по default.
  • instanceof может соответствовать суперклассу.
  • ES6 constructor будет соответствовать точному классу.
  • Легче читать.

function handleError() {
    try {
        throw new RangeError();
    }
    catch (e) {
        switch (e.constructor) {
            case Error:      return console.log('general error');
            case RangeError: return console.log('out of range');
            default:         return console.log('unknown error');
        }
    }
}

handleError();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню