#javascript #typescript #error-handling
#javascript #typescript #обработка ошибок
Вопрос:
У меня есть некоторый код, который выдает Error
. Правильный ли этот код или я делаю что-то неправильно синтаксически? Это поведение по умолчанию throw new Error()
или я делаю что-то не так? Пожалуйста, помогите мне.
function Test1(test: boolean): boolean | never {
if (test === true)
return false;
throw new Error();
}
Test1(false);
Это приводит к следующему выводу:
/home/midhun/typescriptexamples/typescriptexample.js:79
throw new Error();
^
Error
at Test1 (/home/midhun/typescriptexamples/typescriptexample.js:79:11)
at Object.<anonymous> (/home/midhun/typescriptexamples/typescriptexample.js:81:1)
at Module._compile (internal/modules/cjs/loader.js:1158:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
at Module.load (internal/modules/cjs/loader.js:1002:32)
at Function.Module._load (internal/modules/cjs/loader.js:901:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47
Мой последний вопрос: как перехватить эту ошибку в TypeScript?
Комментарии:
1. код ведет себя так, как ожидалось …. в вашем условии указано, что если оно равно true, возвращает false … когда вы его вызываете, это неверно, поэтому оно переходит к следующей строке, которая вызывает новую ошибку ()
2. @JonathanAlfaro но это приводит к сбою программы, как я могу поймать ошибку
3. Разве приведенный выше фрагмент кода не является плохим подходом
4. @JonathanAlfaro это просто сбой программы, верно?
Ответ №1:
В JavaScript (и, следовательно, в TypeScript), если вы хотите предотвратить throw
сбой из-за ошибки n, вам нужно сделать catch
это с помощью try..catch
инструкции. Код, который может привести к ошибке, должен находиться внутри try
блока, а код, который обрабатывает ошибку, должен находиться внутри catch
блока:
console.log("Starting up...")
try {
const ret = Test1(false);
console.log(ret);
} catch (err) {
console.log("uh oh, I caught an error", err)
}
console.log("Moving on...");
Это приводит к появлению журналов типа
/* [LOG]: "Starting up..."
[LOG]: "uh oh, I caught an error", Error: {}
[LOG]: "Moving on..." */