<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jul 10, 2017 at 11:19 AM, Sven Barth via fpc-pascal <span dir="ltr"><<a href="mailto:fpc-pascal@lists.freepascal.org" target="_blank">fpc-pascal@lists.freepascal.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><p>Though you can't use the same code block for multiple types.</p></span></blockquote><div>Structured development to the rescue :) <br></div><div><br></div><div>===</div><div><div>program project1;</div><div><br></div><div>{$mode delphi}</div><div>{$RANGECHECKS on}</div><div><br></div><div>uses SysUtils;</div><div><br></div><div>function HandlingIt(const e: exception): Integer;</div><div>begin</div><div>  writeln('something bad has happened:');</div><div>  writeln(e.message);</div><div>  Result:=0;</div><div>end;</div><div><br></div><div>function Catch(a,b: byte; oper: char): byte;</div><div>begin</div><div>  try</div><div>    if oper = '+' then Result:=a+b</div><div>    else if oper = '/' then Result:=a div b;</div><div>  except</div><div>    on e: EDivByZero do begin</div><div>      writeln('division by zero');</div><div>      Result:=0;</div><div>    end;</div><div>    on e: EIntOverflow do Result:=HandlingIt(e);</div><div>    on e: ERangeError do Result:=HandlingIt(e);</div><div>  end;</div><div>end;</div><div><br></div><div>begin</div><div>  writeln( catch (1,1,'+'));</div><div>  writeln( catch (255,255,'+'));</div><div>  writeln( catch (1,0,'/'));</div><div>end.</div></div><div><br></div></div></div></div>