JаvaScript: Типы ошибок
В этом руководстве вы узнаете о типах ошибок в jаvascript.
Когда вы работаете на языке программирования jаvascript и если вы пишете что-то не так в скрипте, значит, вы, должно быть, видели, что во время работы в нем возникают какие-то ошибки. Для этого есть причина.
Во время написания скрипта вы получаете ошибку из-за неправильного написания синтаксиса или неправильного написания какой-то логики. Или он выполняет сценарий и возникает ошибка.
В jаvascript тоже есть похожие ошибки. И каждая ошибка возникает по разной причине.
Типы ошибок jаvascript
В jаvascript есть шесть типов ошибок, которые могут возникнуть во время выполнения скрипта:
- EvalError
- RangeError
- ReferenceError
- SyntaxError
- TypeError
- URIError
EvalError
jаvascript вызывает ошибку EvalError, если вы неправильно используете функцию eval(). Смотрите пример:
let e = new eval();
Ошибка:
TypeError: eval is not a constructor
Однако в этой ситуации веб-браузеры часто выдают ошибку TypeError вместо EvalError.
RangeError
Ошибка RangeError возникает, когда число не входит в диапазон. См. следующий пример:
try {
let list = Array(Number.MAX_VALUE);
} catch (error) {
console.log(error.name); // "RangeError"
console.log(error.message); // "Invalid array length"
}
Ошибка:
RangeError
Invalid array length
Внутри блока try возникает ошибка RangeError, потому что длина массива (Array) здесь не определена.
ReferenceError
Ошибка ReferenceError возникает, когда вы ссылаетесь на несуществующую переменную, функцию или объект. См. следующий пример:
try {
var a = a + c;
} catch (error) {
console.log(error.name); // "ReferenceError"
console.log(error.message); // "c is not defined"
}
Ошибка:
ReferenceError
c is not defined
В этом примере переменная "c" не существует, поэтому она вызывает ошибку ReferenceError.
SyntaxError
Ошибка SyntaxError возникает в строке, которую вы передаете функции eval(). См. следующий пример:
try {
eval('a x b');
} catch (error) {
console.log(error.name); // "SyntaxError"
console.log(error.message); // "Unexpected identifier"
}
Ошибка:
SyntaxError
Unexpected identifier
Вне функции eval() jаvascript прекращает выполнение кода всякий раз, когда обнаруживает SyntaxError.
TypeError
Ошибка TypeError возникает, если переменная имеет неожиданный тип или доступ к несуществующему методу.
try {
let x = new "String";
} catch(error) {
console.log(error.name); // "TypeError"
console.log(error.message); // "String" is not a constructor"
}
Ошибка:
TypeError
"String" is not a constructor
В этом примере мы попытались создать новый экземпляр литеральной строки (let), которая вызвала ошибку TypeError.
let db = {
host: 'localhost',
port: 3306,
user: 'root',
password: 'secret'
};
try {
db.connect();
} catch (error) {
console.log(error.name); // "TypeError"
console.log(error.message); // "db.connect is not a function"
}
В этом примере мы попытались получить доступ к методу connect() объекта db, которого не существует, поэтому произошла ошибка TypeError.
URIError
Ошибка URIError возникает при использовании encodeURI() или decodeURI() с искаженным URI. См. следующий пример:
console.log(encodeURI('\uDFFF'));
Throwing errors
Чтобы выдать ошибку, вы можете использовать js оператор throw. См. следующий пример:
throw 'ABC';
throw 123;
Когда jаvascript достигает оператора throw, он немедленно останавливает выполнение скрипта. В этом случае, чтобы продолжить выполнение скрипта, вам нужно использовать оператор try ... catch, чтобы перехватить выброшенное значение. См. следующий пример:
try {
throw 123;
} catch (error) {
console.log(error); // 123
}
console.log('continue!'); // "continue!"
Вы также можете использовать typeError, упомянутый ранее, как выдаваемую ошибку. См. следующий пример:
function add(a, b) {
if (typeof a !== 'number') {
throw TypeError('The first argument must be a number');
}
if (typeof b !== 'number') {
throw TypeError('The second argument must be a number');
}
return a + b;
}
add('string', 1);
Ошибка:
TypeError: The first argument must be a number
Пользовательская ошибка
Вы можете создать настраиваемую ошибку, которая возникает из-за встроенной ошибки jаvascript.
function InvalidCallError(message) {
this.name = 'InvalidCallError';
this.message = message;
}
InvalidCallError.prototype = Object.create(Error.prototype);
InvalidCallError.prototype.constructor = Error;
Затем вы можете выдать настраиваемую ошибку, как показано в этом примере:
throw new InvalidCallError('Invalid function call');
Ошибка:
"Uncaught InvalidCallError: Invalid function call"
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.