Ryan Davis的Ruby QuickRef说(没有解释):
不营救例外。永远不会。不然我就捅你一刀。
为什么不呢?做什么才是正确的?
TL;DR:使用standarderror
代替常规异常捕获。当重新引发原始异常时(例如,当进行营救以仅记录异常时),营救exception
可能是可以的。
exception
是Ruby异常层次结构的根,因此当您reception exception
时,您可以从所有内容中进行拯救,包括诸如syntaxerror
、loaderror
和interrup
等子类。
挽救中断
可防止用户使用CtrlC退出程序。
抢救signalexception
会阻止程序正确响应信号。除非被杀死-9
杀死,否则它是不可杀死的。
拯救syntaxerr
意味着失败的eval
将以静默方式执行。
所有这些都可以通过运行此程序并尝试CtrlC或kill
来显示:
loop do
begin
sleep 1
eval "djsakru3924r9eiuorwju3498 += 5u84fior8u8t4ruyf8ihiure"
rescue Exception
puts "I refuse to fail or be stopped!"
end
end
从异常
中解救甚至不是默认值。做
begin
# iceberg!
rescue
# lifeboats
end
不从exception
中解救,而是从standarderror
中解救。您通常应该指定比默认的standarderror
更具体的内容,但是从exception
中进行救援会扩大而不是缩小范围,并且可能会产生灾难性的结果,使bug查找变得极其困难。
如果您确实想要从standarderror
中进行救援,并且需要一个带有异常的变量,则可以使用以下html" target="_blank">表单:
begin
# iceberg!
rescue => e
# lifeboats
end
begin
# iceberg!
rescue StandardError => e
# lifeboats
end
从exception
中进行救援是明智的少数常见情况之一,用于日志记录/报告目的,在这种情况下,您应该立即重新引发异常:
begin
# iceberg?
rescue Exception => e
# do some logging
raise # not enough lifeboats ;)
end
问题内容: 我问了一个一般性的Spring问题:自动播发Spring Bean,并让多个人回答说应尽可能避免调用Spring 。这是为什么? 我还应该如何访问配置了Spring创建的Bean? 我在非Web应用程序中使用Spring,并计划按照LiorH的描述访问共享对象。 修正案 我接受下面的答案,但这是Martin Fowler的另一种选择,他讨论了依赖注入与使用(本质上与调用相同)的优点。
我有一个问题,关于什么是正确的做法,使用SwingU实用程序的调用稍后方法。 所以首先,我想确认我理解正确。 据我所知,对GUI的更改必须在EDT上完成,因为Swing组件不是线程安全的。invokeLater方法将Runnable作为参数,该Runnable中包含的任何内容都将在EDT上运行。因此,对Swing组件的任何调用都被放入一种队列中,在EDT上一次执行一个。 有了这些,我的问题是:使用
问题内容: 是否要保持与旧版本(未生成)的向后兼容性?还是我缺少一个更微妙的细节?我在()中也看到了这种模式,但是归纳为。 问题答案: 之所以使用,是因为它匹配的对象不必与您传递给的对象具有相同的类型;它只要求它们相等。根据规范,如果存在这样的对象,则返回true。请注意,没有什么要求,并且必须是相同的类型。这是因为该方法接受一个as参数,而不仅仅是与该对象相同的类型。 尽管通常已经定义了许多类,
出发地:https://github.com/brandon-rhodes/luca/blob/master/requirements.txt 最后一行是做什么的?
我听到一些人说,即使在使用获得种子之后,使用也是很糟糕的。为什么会这样?我想知道事情是怎么发生的...抱歉,我又问了一个问题..但是,有什么办法可以替代这一点呢?
在JWKS中是什么意思-Json Web Key Set