Я был уверен, что это работало для меня, и я видел его в сети (Джолион Смит и Дэвид Мурхаус). Просто попробовав его в простой программе как в D2007, так и в пробной версии XE2, он не сохраняет измененное сообщение. Как только произойдет "повышение", сообщение вернется к исходному исключению.
Какую очевидную вещь я теряю? Альтернативой является "поднять Exception.Create(...)", но я хочу просто пропустить исходное исключение в цепочке, только с дополнительной информацией, помеченной вдоль каждого блока исключений.
var a: Integer;
begin
try
a := 0;
Label1.Caption := IntToStr(100 div a);
except
on e: Exception do
begin
e.Message := 'Extra Info Plus the original : ' + e.Message;
raise;
end;
end;
end;