brookexception.pas 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. (*
  2. Brook for Free Pascal
  3. Copyright (C) 2014-2019 Silvio Clecio
  4. See the file LICENSE.txt, included in this distribution,
  5. for details about the copyright.
  6. This library is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  9. *)
  10. { Exceptions classes. }
  11. unit BrookException;
  12. {$i brook.inc}
  13. interface
  14. uses
  15. BrookConsts, SysUtils;
  16. type
  17. { Is a metaclass for @link(EBrook) class. }
  18. EBrookClass = class of EBrook;
  19. { Handles general exception in Brook. }
  20. EBrook = class(Exception)
  21. public
  22. { Creates an instance of @code(EBrook). }
  23. constructor Create(AInstance: TObject; const AMsg: string); overload;
  24. { Creates an instance of @code(EBrook). }
  25. constructor Create(AClass: TClass; const AMsg: string); overload;
  26. { Creates an instance of @code(EBrook). }
  27. constructor Create(AName: string; const AMsg: string); overload;
  28. { Creates an instance of @code(EBrook) with a formated message. }
  29. constructor CreateFmt(AInstance: TObject; const AMsg: string;
  30. const AArgs: array of const); overload;
  31. { Creates an instance of @code(EBrook) with a formated message. }
  32. constructor CreateFmt(AClass: TClass; const AMsg: string;
  33. const AArgs: array of const); overload;
  34. { Creates an instance of @code(EBrook) with a formated message. }
  35. constructor CreateFmt(AName: string; const AMsg: string;
  36. const AArgs: array of const); overload;
  37. end;
  38. { Handles the exception for 404 error. }
  39. EBrookHttp404 = class(EBrook);
  40. { Handles the exception for 500 error. }
  41. EBrookHttp500 = class(EBrook);
  42. implementation
  43. constructor EBrook.Create(AInstance: TObject; const AMsg: string);
  44. var
  45. VClassName: string;
  46. begin
  47. if Assigned(AInstance) then
  48. VClassName := AInstance.ClassName
  49. else
  50. VClassName := ES;
  51. inherited CreateFmt(BROOK_ERROR_MASK, [VClassName, AMsg]);
  52. end;
  53. constructor EBrook.Create(AClass: TClass; const AMsg: string);
  54. var
  55. VClassName: string;
  56. begin
  57. if Assigned(AClass) then
  58. VClassName := AClass.ClassName
  59. else
  60. VClassName := ES;
  61. inherited CreateFmt(BROOK_ERROR_MASK, [VClassName, AMsg]);
  62. end;
  63. constructor EBrook.Create(AName: string; const AMsg: string);
  64. begin
  65. inherited CreateFmt(BROOK_ERROR_MASK, [AName, AMsg]);
  66. end;
  67. constructor EBrook.CreateFmt(AInstance: TObject; const AMsg: string;
  68. const AArgs: array of const);
  69. var
  70. VClassName: string;
  71. begin
  72. if Assigned(AInstance) then
  73. VClassName := AInstance.ClassName
  74. else
  75. VClassName := ES;
  76. inherited CreateFmt(Format(BROOK_ERROR_MASK, [VClassName, AMsg]), AArgs);
  77. end;
  78. constructor EBrook.CreateFmt(AClass: TClass; const AMsg: string;
  79. const AArgs: array of const);
  80. var
  81. VClassName: string;
  82. begin
  83. if Assigned(AClass) then
  84. VClassName := AClass.ClassName
  85. else
  86. VClassName := ES;
  87. inherited CreateFmt(Format(BROOK_ERROR_MASK, [VClassName, AMsg]), AArgs);
  88. end;
  89. constructor EBrook.CreateFmt(AName: string; const AMsg: string;
  90. const AArgs: array of const);
  91. begin
  92. inherited CreateFmt(Format(BROOK_ERROR_MASK, [AName, AMsg]), AArgs);
  93. end;
  94. end.