Reputation: 1638
I want to log that an error occurred without exiting from the program, so i enclose the code that might throw an error in a try-catch
block like such
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();
}
The output I would like to obtain is the error's message without the whole stack trace. Something along the lines of:
Error: Missing semicolon at the end of statement: <statement>
and not
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)
Upvotes: 9
Views: 10207
Reputation: 4309
With Node, you can simply use
process.exit()
If you want to log a message - use console.log/error
before exiting the process.
If you just want to remove stacktrace then you may do error.stack = "" before throwing the error like:-
const error = new Error("Your message");
error.stack = ""
throw error
Upvotes: 2
Reputation: 1638
From the documentation:
The Error
object has a .message
property, so instead of printing the whole error, just
console.error(error.message);
Upvotes: 3