问题描述
我正在使用 Yargs 构建一个交互式 CLI,它从 stdin 获取命令并在发生错误时继续执行。从官方文档中,我发现yargs.parse 可以提供我需要的功能。然而,尽管该过程确实在出错时继续进行,它无法控制地打印错误调用堆栈;而且,即使用户稍后给出正确的命令,之前的所有错误调用堆栈仍会被打印,这肯定会混淆和误导用户。根据格式,我认为这是抛出未捕获错误时的自动行为,所以我的问题是:我应该在哪里以及如何捕获这些错误? 显然 yargs 中提供的回调函数.parse 不是抛出错误的范围。
这是一个演示片段
import Yargs = require("yargs");
import Reader = require("readline-sync");
import Chalk = require("chalk");
while (true) {
try {
Yargs.strict().help()
.command({
command: "exit",describe: "Exit the program",handler: _ => {
try {
console.log(Chalk.greenBright("exiting"));
process.exit();
}
catch (error) {
console.log(Chalk.yellowBright("caught"));
}
}
})
.parse(Reader.question(Chalk.yellowBright("> ")),null,(error,argv,output) => {
console.log(Chalk.redBright("callback"));
});
}
catch (error) {
console.log(Chalk.yellowBright("caught"));
}
}
如您所见,我已经尝试将整个语句和命令处理程序放在 try-catch 块中,但是,错误仍未被捕获。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)