@@ -121,6 +121,33 @@ print_help (char *name)
121121 name );
122122} /* print_help */
123123
124+ static void
125+ print_unhandled_exception (jerry_value_t error_value )
126+ {
127+ assert (jerry_value_has_error_flag (error_value ));
128+
129+ jerry_value_clear_error_flag (& error_value );
130+ jerry_value_t err_str_val = jerry_value_to_string (error_value );
131+ jerry_size_t err_str_size = jerry_get_string_size (err_str_val );
132+ jerry_char_t err_str_buf [256 ];
133+
134+ if (err_str_size >= 256 )
135+ {
136+ const char msg [] = "[Error message too long]" ;
137+ err_str_size = sizeof (msg ) / sizeof (char ) - 1 ;
138+ memcpy (err_str_buf , msg , err_str_size );
139+ }
140+ else
141+ {
142+ jerry_size_t sz = jerry_string_to_char_buffer (err_str_val , err_str_buf , err_str_size );
143+ assert (sz == err_str_size );
144+ }
145+ err_str_buf [err_str_size ] = 0 ;
146+
147+ jerry_port_log (JERRY_LOG_LEVEL_ERROR , "Script Error: unhandled exception: %s\n" , err_str_buf );
148+ jerry_release_value (err_str_val );
149+ } /* print_unhandled_exception */
150+
124151int
125152main (int argc ,
126153 char * * argv )
@@ -335,6 +362,7 @@ main (int argc,
335362 if (source_p == NULL )
336363 {
337364 ret_value = jerry_create_error (JERRY_ERROR_COMMON , (jerry_char_t * ) "" );
365+ break ;
338366 }
339367
340368 if (is_save_snapshot_mode )
@@ -427,14 +455,21 @@ main (int argc,
427455 /* Evaluate the line */
428456 jerry_value_t ret_val_eval = jerry_eval (buffer , len , false);
429457
430- /* Print return value */
431- const jerry_value_t args [] = { ret_val_eval };
432- jerry_value_t ret_val_print = jerry_call_function (print_function ,
433- jerry_create_undefined (),
434- args ,
435- 1 );
458+ if (!jerry_value_has_error_flag (ret_val_eval ))
459+ {
460+ /* Print return value */
461+ const jerry_value_t args [] = { ret_val_eval };
462+ jerry_value_t ret_val_print = jerry_call_function (print_function ,
463+ jerry_create_undefined (),
464+ args ,
465+ 1 );
466+ jerry_release_value (ret_val_print );
467+ }
468+ else
469+ {
470+ print_unhandled_exception (ret_val_eval );
471+ }
436472
437- jerry_release_value (ret_val_print );
438473 jerry_release_value (ret_val_eval );
439474 }
440475 }
@@ -447,20 +482,7 @@ main (int argc,
447482
448483 if (jerry_value_has_error_flag (ret_value ))
449484 {
450- jerry_value_clear_error_flag (& ret_value );
451- jerry_value_t err_str_val = jerry_value_to_string (ret_value );
452-
453- jerry_char_t err_str_buf [256 ];
454- jerry_size_t err_str_size = jerry_get_string_size (err_str_val );
455-
456- assert (err_str_size < 256 );
457- jerry_size_t sz = jerry_string_to_char_buffer (err_str_val , err_str_buf , err_str_size );
458- assert (sz == err_str_size );
459- err_str_buf [err_str_size ] = 0 ;
460-
461- jerry_port_log (JERRY_LOG_LEVEL_ERROR , "Script Error: unhandled exception: %s\n" , err_str_buf );
462-
463- jerry_release_value (err_str_val );
485+ print_unhandled_exception (ret_value );
464486
465487 ret_code = JERRY_STANDALONE_EXIT_CODE_FAIL ;
466488 }
0 commit comments