クラスメソッドにする場合、

TShortcutFile = class
private
constructor Create(FileName: TFileName); //ホントのコンストラクタ は隠してしまいます

public
class function CheckCreate(FileName: TFileName):TShortcutFile ;
begin
if not FileExists(ChangeFileExt(FileName,'.lnk')) then result:=nil
else Result:=Self.Create(FileName);

と作成出来ない場合は nil を返してしまいます。
使う時には

ShortcutFile1 := TShortcutFile.CheckCreate('C:\無題.lnk');
if ShortcutFile1<>nil then with ShortcutFile1 try
 処理
finally Free end;

と使うので、使う時の外見上は>>93で無理やりnilを返すコンストラクタと区別はつきません