Thread: How to trap exceptions inside PL/Perl functions?

How to trap exceptions inside PL/Perl functions?

From
"Dmitry Koterov"
Date:
Hello.

In PL/PGSQL I could write:

BEGIN
  SELECT * FROM non_existed_table;
EXCEPTION
  WHEN ... THEN ...
END;

How to do it in PL/Perl? I tried the standard for Perl trapping method:

eval {
  spi_exec_query("SELECT * FROM non_existed_table");
};
if ($@) { ... }

but it does not work - it says that "eval is not safe" or something like that. But I use eval with {}, not with quotes, so - it has to be safe.
So, how to trap errors in this case?