Force stop or halt on error

微笑、不失礼 提交于 2019-12-09 04:46:26

问题


I was wondering if anyone knew of a good way to get R or ESS to stop executing the rest of the code beyond the point at which an error occurs if I am evaluating a region or buffer (I've only found the opposite request in the help archives). I was looking in the R help files but option(error=stop) will only stop execution of the offending function or statement but not those that follow it. Thanks!


回答1:


If R/ESS is hogging up so much compute time that your emacs/ESS is unresponsive to C-c C-c, you can also save it by sending an INTERRUPT signal from the terminal.

First: figure out R's processID using top or ps. (mine was 98490 Then: kill -2 98490 That sends an interrupt signal and you get your ESS/Emacs and R session back




回答2:


According to the ESS manual, this should work: C-c C-c (comint-interrupt-subjob) Sends a Control-C signal to the ESS process. This has the effect of aborting the current command.

John Fox has a website where he offers a configuration for ESS. In it, he has this function:

(defun stop-R ()

"Interrupt R process in lower window."

(interactive)

(select-window win2)

(comint-interrupt-subjob)

(select-window win1))

You should be able to add this function to the menu in XEmacs using:

(defun R-menu ()

  "Hook to install R menu and sub-menus"

  (add-menu-item '("ESS" "R") "Interrupt computation" 'stop-R
)
)
(add-hook 'ess-mode-hook 'R-menu)

You might check out the rest of his configuration file and documentation to see if it interests you. I haven't tried this yet, but I hope that it works for you!

Charlie




回答3:


?break

Only gets you out of loop.

?try

Lets you set up code that might fail and gracefully recover.



来源:https://stackoverflow.com/questions/1428750/force-stop-or-halt-on-error

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!