TRY(
{
  char *buf = malloc(256);

  if (buf == NULL)
    THROW(out_of_memory);

  TRY(
  {
    if (scanf("%255s", buf) != 1)
      THROW(failed_to_read_string);
  },
  {
    /* Inner unwind-block */
  }
     );

  printf("%s\n", buf);
  free(buf);
},
{
  /* Outer unwind-block */
}
   );


