@@ -121,6 +121,33 @@ print_help (char *name)
121
121
name );
122
122
} /* print_help */
123
123
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
+
124
151
int
125
152
main (int argc ,
126
153
char * * argv )
@@ -335,6 +362,7 @@ main (int argc,
335
362
if (source_p == NULL )
336
363
{
337
364
ret_value = jerry_create_error (JERRY_ERROR_COMMON , (jerry_char_t * ) "" );
365
+ break ;
338
366
}
339
367
340
368
if (is_save_snapshot_mode )
@@ -427,14 +455,21 @@ main (int argc,
427
455
/* Evaluate the line */
428
456
jerry_value_t ret_val_eval = jerry_eval (buffer , len , false);
429
457
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
+ }
436
472
437
- jerry_release_value (ret_val_print );
438
473
jerry_release_value (ret_val_eval );
439
474
}
440
475
}
@@ -447,20 +482,7 @@ main (int argc,
447
482
448
483
if (jerry_value_has_error_flag (ret_value ))
449
484
{
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 );
464
486
465
487
ret_code = JERRY_STANDALONE_EXIT_CODE_FAIL ;
466
488
}
0 commit comments