|
From: | Christian Johansson |
Subject: | bug#37480: 27.0.50; uncaught exception |
Date: | Mon, 23 Sep 2019 07:18:25 +0200 |
User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 |
HiAlright, I didn't know about that function. Can you give an example of how to use it? It tried the following but it doesn't work, it seems the thread dies after the signal and I'm not sure were it exits.
(make-thread (lambda() (message "Start of asynchronous thread") (signal 'error '("Fatal error")) (message "End of asynchronous thread") (message "Last error %s" (thread-last-error))))For my ssh-deploy plugin, sometimes a asynchronous process or thread gets an error, could be network issues for instance and I would like to be able to handle these cases. I'm trying to make sure there is only one asynchronous process or thread simultaneously related to a local file, this is to avoid race conditions that otherwise occur with my plugin, especially when on a bad connection.
I would be interested in exploring how to signal the main thread from the created thread, where can I read more about that?
Hälsningar / Best Regards Christian On 2019-09-22 17:39, Eli Zaretskii wrote:
Cc: 37480@debbugs.gnu.org From: Christian Johansson <christian@cvj.se> Date: Sun, 22 Sep 2019 17:26:28 +0200 (condition-case nil (make-thread (lambda() (message "Start of asynchronous thread") (signal 'error '("Fatal error")) (message "End of asynchronous thread"))) (message "Catched error")) I have a case were a error occurs inside a tramp thread and I would like to be able to handle itYou don't need condition-case in this case, you just need to examine the value of thread-last-error when the thread exits. Alternatively, you could try making the thread you start signal the main thread, then the main thread should be able to catch that error. In general, errors are thread-local, so you cannot catch an error signaled in another thread.
[Prev in Thread] | Current Thread | [Next in Thread] |