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=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.6 Path: eternal-september.org!reader02.eternal-september.org!aioe.org!x6YkKUCkj2qHLwbKnVEeag.user.46.165.242.91.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Exception Handling within Gtkada Date: Tue, 21 Sep 2021 09:01:35 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <27364e05-ceac-49de-b6b4-954609d00543n@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: gioia.aioe.org; logging-data="59585"; posting-host="x6YkKUCkj2qHLwbKnVEeag.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.9.2 Xref: reader02.eternal-september.org comp.lang.ada:62804 List-Id: 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; -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de