Handle uncaught worker errors without panicking (#3019)

This commit is contained in:
Kitson Kelly 2019-09-26 00:46:58 +10:00 committed by Ryan Dahl
parent 112ce0df1f
commit 3d2d0ee771
6 changed files with 31 additions and 15 deletions

View file

@ -51,6 +51,8 @@ mod tokio_write;
pub mod version;
pub mod worker;
use crate::deno_error::js_check;
use crate::deno_error::print_err_and_exit;
use crate::progress::Progress;
use crate::state::ThreadSafeState;
use crate::worker::Worker;
@ -90,17 +92,6 @@ impl log::Log for Logger {
fn flush(&self) {}
}
fn print_err_and_exit(err: ErrBox) {
eprintln!("{}", err.to_string());
std::process::exit(1);
}
fn js_check(r: Result<(), ErrBox>) {
if let Err(err) = r {
print_err_and_exit(err);
}
}
fn create_worker_and_state(
flags: DenoFlags,
argv: Vec<String>,
@ -118,7 +109,7 @@ fn create_worker_and_state(
});
// TODO(kevinkassimo): maybe make include_deno_namespace also configurable?
let state = ThreadSafeState::new(flags, argv, progress, true)
.map_err(print_err_and_exit)
.map_err(deno_error::print_err_and_exit)
.unwrap();
let worker = Worker::new(
"main".to_string(),