public void test() throws GLib.Error { try { work(); } finally { cleanup(); } } private void work() throws GLib.Error { // all good } private void cleanup() throws GLib.Error { // all good } public int main(string[] argv) { try { test(); } catch (GLib.Error err) { print("Error: %s\n", err.message); } return 0; }