Exception nested call



Exception nested call
Smart pascal source code
type Exception1 = class(Exception) end; type Exception2 = class(Exception) end; { main.pas } Begin procedure Baz(i: Integer); begin if i = 0 then raise new Exception1('Error message 1') else raise new Exception2('Error message 2'); end; procedure Bar(i: Integer); begin Baz(i); end; procedure Foo; var i: Integer; begin for i := 0 to 2 do begin try Bar(i); except on E: Exception1 do WriteLn(E.ClassName + ' caught'); end; end; end; Foo; { <<< CONSOLE OUTPUTS >>> Exception1 caught } function Test1: String; begin raise Exception.Create('TEST'); end; procedure Test2; begin StrToInt(Test1); end; Test2; { Uncaught Object }