В JavaScript, когда вы пытаетесь обратиться к методу или свойству, которого не существует в объекте (или классе), возникает `TypeError`. Чтобы обработать такую ошибку, вы можете использовать конструкцию `try-catch`. В блоке `try` будет выполняться потенциально опасный код, а в блоке `catch` вы сможете отловить и обработать возникшую ошибку.
Вот пример кода:
```javascript
class Test {
/* Предполагаем, что класс Test не содержит метода someMethod */
doSomething() {
// Логика метода
}
}
const test = new Test();
try {
test.someMethod(); // Попытка вызова несуществующего метода
} catch (error) {
// Error caught
if (error instanceof TypeError) {
console.error('Попытка обращения к несуществующему методу или свойству:', error.message);
} else {
// Обработка других видов ошибок
throw error; // Перевыброс ошибки, если это не TypeError
}
}
console.log('Продолжение выполнения программы после обработки ошибки.');
```
Чтобы создать кастомную ошибку для неправильных значений в классе `Test`, вы можете создать свой класс ошибки, наследуя его от `Error`. Затем вы можете бросать эту ошибку в вашем классе при обнаружении неправильного ввода. Подобно `TypeError`, `catch` в блоке `try-catch` позволит вам обработать кастомную ошибку и продолжить выполнение кода.
```javascript
class InvalidInputError extends Error {
constructor(message) {
super(message); // (1) вызываем конструктор базового класса
this.name = "InvalidInputError"; // (2) задаём имя ошибки
}
}
class Test {
api(input) {
// Проверка, что введено корректное значение (простой пример для демонстрации)
if (!/^[a-zA-Z0-9]+$/.test(input)) {
throw new InvalidInputError('Ввод содержит недопустимые символы');
}
// Остальная логика метода, если значение корректное
}
}
const test = new Test();
try {
test.api('api.некорректное_значение');
} catch (error) {
// Обработка ошибок
if (error instanceof InvalidInputError) {
console.error('Пользовательская ошибка:', error.message);
} else {
// Обработка других видов ошибок
throw error; // Перевыброс ошибки, если это не InvalidInputError
}
}
console.log('Продолжение выполнения программы после обработки кастомной ошибки.');
```
Используя блок `try-catch`, вы можете обеспечить корректную обработку ошибок и предотвращение аварийного завершения программы при возникновении исключительных условий.