Ya sé que sólo es un ejemplo, pero es buena costumbre reinicializar las variables implicadas en la excepción (si se conocen), de esa forma el programa puede continuar sin causar males mayores, sobre todo si "a" es una variable a nivel de módulo (global).
Código Delphi
[-]begin
StringList := TStringList.Create();
try
try
a := 1 / 0;
except
on e : Exception do
begin
MessageDlg('Exception '+e.Message,mtError,[mbOk],0);
a:= 1; end
end;
finally
StringList.Free;
end;
end;