Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8079107
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 5, 20262026-06-05T16:00:01+00:00 2026-06-05T16:00:01+00:00

This is sample of re-raise exception and working well try raise Exception.Create(‘Exception msg’); except

  • 0

This is sample of re-raise exception and working well

  try
    raise Exception.Create('Exception msg');
  except
    on E: Exception do
    begin
      if not(e is EConvertError) then
        raise; // re-raise exception
    end;
  end;

and here is my Custemize method

//    uses fib //fibplus  EFIBInterBaseError
    procedure CustomizeException(e: Exception);
    var
      s: String;
    begin
      if E is EFIBInterBaseError then
      begin
        if Pos('unique',e.Message)>0 then
        begin
          s := 'record';
          if Pos('CUSTOMMERS_IDX1',e.Message)>0 then
            s:= 'Custommer Number';

          raise TCustomizedException.CreateFmt('The %s is already exists.',[s]);
        end
        else
        if Pos('</CMSG>',e.Message)>0 then
        Begin
          raise TCustomizedException.CreateFmt('%s',
          [StrUtilsEx.GiveInTags(e.Message,'<CMSG>','</CMSG>')]
          );
        End
        else
          raise EFIBInterBaseError.CreateFmt('%s',[e.Message]);
      end
      else
        raise Exception.Create(e.Message);   //e;// e.Create(e.Message);
    end;

But

  try
    raise EConvertError.Create('Error Message');
  except on e : exception do
    Begin
      ShowMessage(Format('%s -> %s',[e.ClassName , e.Message])); //(1)
      try
        CustomizeException(e);
      except on e2: Exception do
        ShowMessage(Format('%s -> %s',[e2.ClassName , e2.Message])); //(2)
      end;
    End;
  end;

Result

(1)->EConvertError -> Error Message

(2)->Exception -> Error Message

when i change last line like this code is working well

  else
    raise e;

(1)->EConvertError -> Error Message

(2)->EConvertError -> Error Message

but
i’m getting “Access violation at address 00405F04 in module ‘Test.exe’. Read of address 00000000.” after messages

How to raise same exception type as base exception

The Solution is raise TObject(AcquireExceptionObject); //<- I would like to solve with “E :

type
  ECustomizedException = class(Exception);
 uses 
  fib,SysUtils,System


class procedure SystemEx.CustomizeException(E : Exception);
var
  s: String;
begin
  if E is EFIBInterBaseError then
  begin
    if Pos('unique',e.Message)>0 then
    begin
      s := 'Record';
      if Pos('CUSTOMMER_IDX1',e.Message)>0 then
        s:= 'Custommer';

      raise ECustomizedException.CreateFmt('%s is already exists.',[s]);
    end
    else
    if Pos('</CMSG>',e.Message)>0 then
    Begin
      raise ECustomizedException.CreateFmt('%s',
      [StrUtilsEx.GiveInTags(e.Message,'<CMSG>','</CMSG>')]
      );
    End
    else
      raise EFIBInterBaseError.CreateFmt('%s',[e.Message]);
  end
  else
    raise TObject(AcquireExceptionObject); //<- I would like to solve with "E : Exception" param
//    raise Exception.Create(e.Message);   //e;// e.Create(e.Message);// Exception.Create(E.Message);
End.
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-05T16:00:05+00:00Added an answer on June 5, 2026 at 4:00 pm

    The problem you face is that if an exception is caught in an except block the “end” will free the exception instance that you just raised again. So the next except block will catch the already released Exception instance. But you can prevent this by calling AcquireExceptionObject which makes you the owner of the exception instance.

    Because you “can’t” use raise; (System.@RaiseAgain) you can throw the same exception instance with raise AcquireExceptionObject;

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Given this sample code: #include <iostream> #include <stdexcept> class my_exception_t : std::exception { public:
Hello I'm using this sample in Java to try to load OpenStreetMaps Offline tiles,
I have this simple exception hierarchy: type FirstLevelException(msg) = inherit System.Exception (msg) type SecondLevelException(msg,
Consider this sample html <div class=A> <div class=B> <span class=C>Sample text</span> <div class=D> <div
Consider this sample class, class TargetClass { private static String SENSITIVE_DATA = sw0rdfish; private
In this sample code the URL of the app seems to be determined by
in this sample method/message: -(void) setNumerator:(int) n { numerator = n; } What does
Take this sample class as an example: [AttributeUsage(AttributeTargets.All, AllowMultiple=true)] public class BugFixAttribute : System.Attribute
Using this sample : I have make my own Fragment that holds tabhost and
As per this sample - http://msdn.microsoft.com/en-us/library/windows/desktop/ee706590(v=vs.85).aspx , I am trying to invoke my script

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.