From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-2.9 required=3.0 tests=BAYES_00,NICE_REPLY_A autolearn=ham autolearn_force=no version=3.4.6 Subject: Re: Exception Handling within Gtkada Newsgroups: comp.lang.ada References: <27364e05-ceac-49de-b6b4-954609d00543n@googlegroups.com> From: ldries46 Date: Wed, 22 Sep 2021 10:42:29 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-GB Message-ID: Organization: KPN B.V. Path: eternal-september.org!reader02.eternal-september.org!news.mixmin.net!newsreader4.netcologne.de!news.netcologne.de!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!feed.abavia.com!abe001.abavia.com!abp001.abavia.com!news.kpn.nl!not-for-mail Injection-Date: Wed, 22 Sep 2021 10:42:29 +0200 Injection-Info: news.kpn.nl; mail-complaints-to="abuse@kpn.com" X-Received-Bytes: 3054 Xref: reader02.eternal-september.org comp.lang.ada:62812 List-Id: Op 21-9-2021 om 9:01 schreef Dmitry A. Kazakov: > On 2021-09-21 08:49, Vadim Godunko wrote: >> On Monday, September 20, 2021 at 3:06:02 PM UTC+3, ldries46 wrote: >>> I want an exception to be seen within an existing window of Gtkada >>> to be able to see details of the error. So I used: >>> >>> exception >>> when no_const => >>> Main_Window.Buffer.Insert_At_Cursor >>> ("-------------------------------------------------------------------------" >>> >>> & To_String(CRLF)); >>> Main_Window.Buffer.Insert_At_Cursor("Error : io_const" & >>> to_String(CRLF)); >>> end Test_Exception; >>> >>> In this case the the program ends and the reason of the exception is >>> lost. I want this only for a selected nr of exceptions. In this case >>> the exception no_const. >> >> Generally, Ada exceptions must not left scope of callback function. >> Thus, such code should be added to each callback/event handler/etc. >> subprogram of your application. > > Right. Each handler should end like this: > >    exception >       when Error : others => >          Glib.Message.Log >          (  "My fancy program", >             Log_Level_Critical, >             (  "Fault in On_Button_Click: " >             &  Exception_Information (Error) >          )  ); >    end On_Button_Click; > I tried different approaches but they cannot solve my problem. Part of the problem is probably that I am developing a package which should be usable in all different kind of programs maybe even under programs using all different kind of GUI's. That means that exception handling cannot always be done in the package but should be done in at least a package calling that problem. With this approach I tried to solve an earlier problem I asked about "Is there a way to see if a value is declared as a constant". I tried to solve that problem in a way that needed Exception handling during running to solve a design problem that could be made. I will need another way to go around that problem.