The following bug has been logged on the website:
Bug reference:      16048
Logged by:          Fabio Henrique Gibon
Email address:      fabiogibon@gmail.com
PostgreSQL version: 12.0
Operating system:   Windows
Description:
Hi,
 
        I have a database using LATIN1 (and I can't change it), so, when the
user informar a invalid character it is not captured in exception clause.
See a short sample:
DO $$
DECLARE 
   v varchar;
BEGIN
   v := 'ABCŸ';
EXCEPTION
WHEN others THEN
RAISE INFO 'Error State: %', SQLSTATE;
END$$;
I tried in old versions (9.0, 9.6,...) and the result is the same. The error
is propagated, disregarding the exception treatement.