Project1

标题: 如何捕捉SystemExit [打印本页]

作者: 有丘直方    时间: 2017-1-27 18:15
标题: 如何捕捉SystemExit
因为要实现在任何时候、以任何方式试图退出程序都会执行某一个方法,我想到了捕捉SystemExit,因为exit方法会抛出此异常来退出程序。为了做到这一点,我想到了重新定义rgss_main,使其在执行块内的内容时用begin语句捕捉SystemExit。
  1.   alias origin_rgss_main rgss_main
  2.   def rgss_main
  3.     begin
  4.       super
  5.     rescue SystemExit
  6.       pre_exit
  7.       exit
  8.     end
  9.   end
  10.   def pre_exit
  11.     # ...
  12.   end
复制代码
其中pre_exit方法是在退出程序时执行的。但是经过测试发现这些代码根本没用。查了Ruby语法,关于begin语句有
在没有指定异常类型时,rescue 则会捕捉所有 StandardError 子类的异常,大多数的内建异常都是 StandardError 的子类。
又发现SystemExit异常不是StandardError的子类。
所以,希望找到一个可以捕捉SystemExit的办法,或者找到一个能实现我希望实现功能的另外的办法。非常感谢。
作者: shitake    时间: 2017-1-27 20:12
at_exit
http://www.kuqin.com/rubycndocument/man/stdlib_function.html




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1