Поиск…


Вступление

Мы узнаем, как создавать объекты Error и как бросать и обрабатывать ошибки в Node.js

Будущие изменения, связанные с передовыми методами обработки ошибок.

Создание объекта Error

новая ошибка (сообщение)

Создает новый объект ошибки, где для message значения задано свойство message созданного объекта. Обычно аргументы message передаются в конструктор ошибок в виде строки. Однако, если аргументом message является объект не строка, то конструктор ошибок вызывает метод .toString() переданного объекта и устанавливает это значение в свойство message созданного объекта ошибки.

var err = new Error("The error message");
console.log(err.message); //prints: The error message
console.log(err);
//output
//Error: The error message
//    at ... 

Каждый объект ошибки имеет трассировку стека. Трассировка стека содержит информацию об ошибке и показывает, где произошла ошибка (приведенный выше вывод показывает стек ошибок). После создания объекта ошибки система фиксирует трассировку стека ошибки в текущей строке. Чтобы получить трассировку стека, используйте свойство стека для любого созданного объекта ошибки. Ниже две строки идентичны:

console.log(err);
console.log(err.stack);

Ошибка выброса

Ошибка броска означает исключение, если какое-либо исключение не обрабатывается, тогда сервер узла будет аварийно завершен.

Следующая строка вызывает ошибку:

throw new Error("Some error occurred"); 

или же

var err = new Error("Some error occurred");
throw err;

или же

throw "Some error occurred";

Последний пример (бросание строк) не является хорошей практикой и не рекомендуется (всегда бросайте ошибки, являющиеся экземплярами объекта Error).

Обратите внимание, что если вы throw ошибку в свою, то система выйдет из строя на этой строке (если нет обработчиков исключений), после этой строки никакой код не будет выполнен.

var a = 5;
var err = new Error("Some error message");
throw err; //this will print the error stack and node server will stop
a++; //this line will never be executed
console.log(a); //and this one also

Но в этом примере:

var a = 5;
var err = new Error("Some error message");
console.log(err); //this will print the error stack
a++; 
console.log(a); //this line will be executed and will print 6

попробуйте ... catch block

try ... catch block предназначен для обработки исключений, помните, что исключение означает сброшенную ошибку, а не ошибку.

try {
    var a = 1;
    b++; //this will cause an error because be is undefined
    console.log(b); //this line will not be executed
} catch (error) {
    console.log(error); //here we handle the error caused in the try block
}

В блоке try b++ выдается ошибка и эта ошибка передается блоку catch который можно обрабатывать там или даже может быть вызвана той же ошибкой в ​​блоке catch или сделать небольшую модификацию, а затем выбросить. Давайте посмотрим следующий пример.

try {
    var a = 1;
    b++;
    console.log(b);
} catch (error) {
    error.message = "b variable is undefined, so the undefined can't be incremented"
    throw error;
}

В приведенном выше примере мы изменили свойство message объекта error и затем выбросили измененную error .

Вы можете выполнить любую ошибку в блоке try и обработать ее в блоке catch:

try {
    var a = 1;
    throw new Error("Some error message");
    console.log(a); //this line will not be executed;
} catch (error) {
    console.log(error); //will be the above thrown error 
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow