小编Nic*_*ert的帖子

如何在 JavaScript 中记录没有堆栈跟踪的错误消息?

我想在不退出程序的情况下记录发生的错误,因此我将可能会引发错误的代码包含在try-catch这样的块中

try
{
    let query = parseStatement(input); // might throw an error
    console.log(query);
}
catch (err)
{
    console.error(err); // logs the entire error with stack trace
}
finally
{
    this.prompt();
}
Run Code Online (Sandbox Code Playgroud)

我想获得的输出是没有整个堆栈跟踪的错误消息。大致如下:

Error: Missing semicolon at the end of statement: <statement>

并不是

Error: Missing semicolon at the end of statement: <statement>
    at error (/home/nic/dev/nodedb/src/errors.js:5:11)
    at Function.tokenize (/home/nic/dev/nodedb/src/tokens.js:53:13)
    at parseStatement (/home/nic/dev/nodedb/src/sql.js:35:24)
    at Shell.onData (/home/nic/dev/nodedb/src/shell.js:49:25)
    at ReadStream.emit (node:events:394:28)
    at addChunk (node:internal/streams/readable:312:12)
    at readableAddChunk (node:internal/streams/readable:287:9)
    at ReadStream.Readable.push (node:internal/streams/readable:226:10)
    at TTY.onStreamRead (node:internal/stream_base_commons:190:23)
Run Code Online (Sandbox Code Playgroud)

javascript error-handling stack-trace node.js traceback

5
推荐指数
1
解决办法
7064
查看次数

在 Rust 中,在第一个空格上分割字符串一次

我有一个字符串,比如说"dog cat fish",我想将其在第一个空格上分割成两个片段,如下所示:("dog", "cat fish")
我尝试天真地使用split_once()这样的方法:

let string = "dog cat fish";
let (first_word, rest_of_string) = string.split_once(' ').unwrap();
Run Code Online (Sandbox Code Playgroud)

它对于常规空白字符有效。但是,我希望它也适用于其他类型的 Unicode 空白字符,就像\tsplit_whitespace()方法一样。
不过,我不想使用split_whitespace(),因为它返回一个迭代器,我必须在迭代后重新收集并加入单词,因为这会浪费时间:

let mut it = string.split_whitespace();
let first_word = it.next().unwrap();
let rest_of_string = it.collect::Vec<&str>().join(" ");
Run Code Online (Sandbox Code Playgroud)

那么,如果我有一个像 那样的字符串"dog \t cat fish",我该如何分割它以获得这两个切片("dog", "cat fish")
我也想过使用正则表达式,但是有更好的方法吗?

string whitespace split rust

2
推荐指数
1
解决办法
497
查看次数