@@ -14,12 +14,29 @@ pub fn run(args: Vec<String>, bin_name: Option<String>, callback: JsFunction) ->
1414
1515 // we need to run in a separate thread so Node.js consumers
1616 // can do work while `tauri dev` is running.
17- std:: thread:: spawn ( move || match tauri_cli:: try_run ( args, bin_name) {
18- Ok ( _) => function. call ( Ok ( true ) , ThreadsafeFunctionCallMode :: Blocking ) ,
19- Err ( e) => function. call (
20- Err ( Error :: new ( Status :: GenericFailure , format ! ( "{:#}" , e) ) ) ,
21- ThreadsafeFunctionCallMode :: Blocking ,
22- ) ,
17+ std:: thread:: spawn ( move || {
18+ let res = match std:: panic:: catch_unwind ( std:: panic:: AssertUnwindSafe ( || {
19+ tauri_cli:: try_run ( args, bin_name)
20+ } ) ) {
21+ Ok ( t) => t,
22+ Err ( e) => {
23+ return function. call (
24+ Err ( Error :: new (
25+ Status :: GenericFailure ,
26+ "Tauri CLI unexpected panic" ,
27+ ) ) ,
28+ ThreadsafeFunctionCallMode :: Blocking ,
29+ ) ;
30+ }
31+ } ;
32+
33+ match res {
34+ Ok ( _) => function. call ( Ok ( true ) , ThreadsafeFunctionCallMode :: Blocking ) ,
35+ Err ( e) => function. call (
36+ Err ( Error :: new ( Status :: GenericFailure , format ! ( "{:#}" , e) ) ) ,
37+ ThreadsafeFunctionCallMode :: Blocking ,
38+ ) ,
39+ }
2340 } ) ;
2441
2542 Ok ( ( ) )
0 commit comments