From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Attaching context info to an error Date: Fri, 22 Dec 2023 17:37:41 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39490"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: emacs-devel@gnu.org To: Jens Schmidt Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Dec 22 23:38:35 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rGoA7-000A69-Bw for ged-emacs-devel@m.gmane-mx.org; Fri, 22 Dec 2023 23:38:35 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rGo9S-0005NW-2W; Fri, 22 Dec 2023 17:37:54 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rGo9M-0005NH-9m for emacs-devel@gnu.org; Fri, 22 Dec 2023 17:37:48 -0500 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rGo9K-0003MG-AO for emacs-devel@gnu.org; Fri, 22 Dec 2023 17:37:48 -0500 Original-Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 6A36344292E; Fri, 22 Dec 2023 17:37:43 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1703284662; bh=JwU3KGn+VcgV5oGAS86h2iyoDdeMpX43CMJP/fOynow=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=E+4qUOw21DkqLEhZzpNNu/hQ+8SF0G9HOsuzLdsdA0Fzq9sjJ25GtVL4mJNzOctYk xr0EDpMo9I+GTAEtxk6QxucbOvtorQS9iTA1Wqj4+n2npDdWiKweQF6kigt8dzYA5K oZ8+Tld4KbhhsEoSlumlNmOjSj2c6inlrnpIyinPIycOOGrSdNfPL2MgBoFEOA5Fki 5dwum3QhFw+x3a93W8yKn/Ft1JJB7KTw7WEtGERCVJ5qL4Mq8egwTMZKEY2kg7hkAW LdEtyuOIM9K6Yv7YQsQJtW8U0otAxTiydcaDyIA2DOUHDGtVgsXNW/OBdc1nQOERgu MurYF4ylgFHYw== Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 15BCF44292A; Fri, 22 Dec 2023 17:37:42 -0500 (EST) Original-Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id E2485120FB7; Fri, 22 Dec 2023 17:37:41 -0500 (EST) In-Reply-To: (Jens Schmidt's message of "Fri, 22 Dec 2023 21:56:32 +0100") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:314088 Archived-At: >> I'm playing with `handler-bind` and trying to see how we could make use >> of such a functionality in Emacs. > `handler-bind' seems to have the main advantage over `condition-case' > that you get the full information about the original error stack, while > in a `condition-case' that information is lost, correct? Yes, it's a kind of mix between `condition-case` and `signal-hook-function`. >> but I don't like the idea of changing one kind of error into another. > Why not? Wrapping errors that way is what I know. Because a (condition-case err (FOO) (wrong-number-of-arguments ...)) won't catch an `error-during-load` even if that error is wrapped around a `wrong-number-of-arguments` error. >> Any other idea how/where we could attach that info? > Property list of the error-symbol? That's storing the info in a global var, which is hackish: as you say it will sometimes "survive the lifetime of the error" but it will also sometimes live a too short life if some other error happens between the moment the first error is signaled and that first error is caught. [ This is likely to occur if we run the debugger between those two, for instance, or if an unwind form signal an error, ... ] FWIW, a global variable is what we use for the only such "error context information" we currently have, which is stored in `Vsignalling_function` (not exposed to ELisp, but visible sometimes in *Messages*). Stefan