Und jetzt könnte man wieder wild darüber debatieren, ob der Aufrufer von
ScaleBmp
gezwungen sein sollte, die offensichtlich zu erwartenden EArgumentNull und EArgumentOutOfRange-
Exception zu behandeln oder selbst kenntlich zu machen, dass er diese werfen könnte.

Ich habe eine ähnliche Debatte mit den Fail-Fast-Verfechtern gehabt. Man gewöhnt sich an den contract:
Delphi-Quellcode:
Procedure TMyStuff.ScaleBitmap(aBitmap : TBitmap...);
Begin
CheckNull(aBitMap,'TMyStuff.ScaleBitmap: aBitmap');
...
Eine Bitmapreferenz, die nil ist, kann skaliert auch wieder eine nil-Referenz ergeben
Das ist schwierig, wenn Du auf Methoden der Bitmap zugreifen willst. Wobei Delphi da ja doch ziemlich robust ist ('if self=nil then return'). So gesehen, doch nicht so schwierig