Odpovídáte na názor ke článku SEH v Linuxu (C++).
Nevim proc nejde to, co jde napr. v Delphi:
procedure Test;
var i, a, b: integer;
L: TStringList;
begin
L := TStringList.Create; // alokace pameti - vytvoreni instance
try
L.Append('ahoj'); // pridani stringu do string listu
a := 1;
b := 0;
i := a div b; // exception - deleni nulou (div je celociselne deleni)
bla_bla_bla; // sem se to uz nedostane !!!
finally
L.Free; // uvolneni pameti - provede se vzdy
end;
end;
Nebo s osetrenim exception :
procedure Test;
var i, a, b: integer;
L: TStringList;
chyba: boolean;
begin
chyba := false;
L := TStringList.Create; // alokace - vytvoreni objektu
try
L.Append('ahoj'); // pridani stringu do string listu
a := 1;
b := 0;
try
i := a div b; // exception - deleni nulou
exception
chyba := true; // byla chyba
end;
bla_bla_bla; // sem se to dostane !!!
finally
L.Free; // uvolneni pameti - provede se vzdy
end;
end;
Blok mezi finally ... end; se provadi i kdyz vznikla exception. Je to naprosto elegantni a bezpecne. Nemam zadne auto_ptr jako v C++ a nic neresim. Pisu pouze try ... finally ... end;. Mohu vyjimku poslat pomoci klicoveho slova raise ven z procedury, osetruji ruzne typy vyjimek podle typu. Je to mnohem prehlednejsi a resi to rovnou kompilator.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 57 608×
Přečteno 27 722×
Přečteno 26 403×
Přečteno 24 367×
Přečteno 22 864×