home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / OSL_INC.PAK / EXCEPT.H < prev    next >
C/C++ Source or Header  |  1995-08-29  |  2KB  |  68 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectSupport
  3. // (C) Copyright 1994 by Borland International, All Rights Reserved
  4. //
  5. //   Base exception support for framework exceptions
  6. //----------------------------------------------------------------------------
  7. #if !defined(OSL_EXCEPT_H)
  8. #define OSL_EXCEPT_H
  9.  
  10. #if !defined(OSL_DEFS_H)
  11. # include <osl/defs.h>
  12. #endif
  13.  
  14. //----------------------------------------------------------------------------
  15. // Exception support comes in two levels.
  16. //
  17. //  1) No emulation provided, any compiler support disabled. Throwing causes
  18. //     an abort. (DISABLE_EXCEPTIONS defined)
  19. //  2) Compiler support exceptions (DISABLE_EXCEPTIONS not defined)
  20. //
  21. // BI_NO_EXCEPTIONS comes from classlib/compiler.h
  22. // DISABLE_EXCEPTIONS comes from the outside
  23. //
  24. #if defined(DISABLE_EXCEPTIONS)  // (level 1 -- exceptions disabled)
  25.  
  26. #define TRY
  27. #define CATCH(arg_and_code)
  28. #define ENDCATCH
  29. #define THROW(expr) abort()
  30. #define RETHROW
  31.  
  32. #else                            // (level 2 -- compiler support required)
  33.  
  34. #if defined( __BCPLUSPLUS__ )
  35. # include <except.h>
  36. #else
  37. # error Exceptions are only natively supported with Borland C++.
  38. #endif
  39.  
  40. #define TRY try
  41. #define CATCH(arg_and_code)  catch arg_and_code
  42. #define ENDCATCH
  43. #define THROW(expr) throw expr
  44. #define RETHROW throw
  45.  
  46. #endif
  47.  
  48. //----------------------------------------------------------------------------
  49. //
  50. // Derived exception class that supports cloning, rethrowing & instance
  51. // counting
  52. //
  53. //----------------------------------------------------------------------------
  54.  
  55. class _BIDSCLASS_RTL TXBase : public xmsg {
  56.   public:
  57.     TXBase(const string& msg);
  58.     TXBase(const TXBase& src);
  59.     virtual ~TXBase();
  60.  
  61.     virtual TXBase* Clone();
  62.     virtual void Throw();
  63.  
  64.     static int InstanceCount;
  65. };
  66.  
  67. #endif  // OSL_EXCEPT_H
  68.