if you are using recent version of postgresql
and using plain SQL, just enclose it with savepoint
test@ws-dev:5432 test=> ALTER TABLE tbl DROP field;
ALTER TABLE
test@ws-dev:5432 test=*> SAVEPOINT test_1;
SAVEPOINT
test@ws-dev:5432 test=*> ALTER TABLE tbl DROP field;
ERROR: column "field" of relation "tbl" does not exist
test@ws-dev:5432 test=!> ROLLBACK TO SAVEPOINT test_1;
ROLLBACK
test@ws-dev:5432 test=*>
if it goes OK instead of ROLLBACK TO SAVEPOINT you do RELEASE SAVEPOINT
(in function, beside this method, you can use exceptions)