unit Unit2; interface uses SysUtils; type TTestProject = class public function LoadFromFile: Boolean; end; ETestProjectError = class(Exception); ETestProjectTypeAError = class(ETestProjectError); ETestProjectTypeBError = class(ETestProjectError); ETestProjectTypeCError = class(ETestProjectError); implementation uses ErrorListUnit; { TTestProject } function TTestProject.LoadFromFile: Boolean; begin Result := False; if True then begin ErrorList.Add(ETestProjectTypeAError.Create('タイプAのエラー1')); //エラーだけど処理続行 end; if True then begin ErrorList.Add(ETestProjectTypeAError.Create('タイプAのエラー2')); //エラーだけど処理続行 end; if True then begin ErrorList.Add(ETestProjectTypeBError.Create('タイプBのエラー1')); //エラーだけど処理続行 end; if True then begin ErrorList.Add(ETestProjectTypeCError.Create('タイプCのエラー1')); Exit; //致命的なエラーだから処理続行不可能 end; Result := True; end; end.