这是在街区进行救援的正确方法吗?
此外,它是最短的吗?
JAVAC=javac
sources = $(wildcard *.java)
classes = $(sources:.java=.class)
all: myProgram
myProgram: $(classes)
%.class: %.java
$(JAVAC) $<
jar:
@echo "Manifest-Version: 1.0" > manifest.txt
@echo "Class-Path: ." >> manifest.txt
@echo "Main-Class: Main" >> manifest.txt
@echo "" >> manifest.txt
jar -cmf manifest.txt JARNAME.jar $(classes)
clean:
rm -f *.class
rm manifest.txt
答案 0 :(得分:2)
使用begin,rescue,ensure的想法是放置方法而不是在begin
块中生成错误,然后你可以在一个或多个rescue
块中处理错误,最后你可以为您要在成功或失败方案中执行的句子添加一个可选的ensure
块,例如发布资源。
如果你想通过begin,rescue,ensure block来处理所有方法,那么begin
关键字是可选的,你可以使用或不使用关键字,因为你要求最短的选项,你需要对您的代码进行一些小的更改:
def rescue_definition
user.begin_rescue
# and any other stuff you want to execute
if user
flash['success'] = 'OK'
else
flash['error'] = 'NO'
end
redirect_to :back
rescue Example::ParameterValidationError => e
redirect_to :back, error: e.message_to_purchaser
rescue Example::ProcessingError => e
redirect_to :back, error: e.message_to_purchaser
rescue Example::Error
redirect_to :back, error: e.message_to_purchaser
end
如果您希望它更短,您可以在一个救援区中拯救多个异常类型:
def rescue_definition
user.begin_rescue
# and any other stuff you want to execute
if user
flash['success'] = 'OK'
else
flash['error'] = 'NO'
end
redirect_to :back
rescue Example::ParameterValidationError, Example::ProcessingError, Example::Error => e
redirect_to :back, error: e.message_to_purchaser
end
答案 1 :(得分:0)
Aguar的帖子处理当前的实施。如果您以相同的方式处理所有错误,那么您可以让它们从自定义类继承,并通过1次救援调用将它们全部捕获。
def stuff
user.stuff
if user
flash['success'] = 'Ya'
else
flash['error'] = 'Nah'
end
redirect_to ....
rescue CustomClassError => e
redirect_to :back, error: e.message_to_purchaser
rescue NonCustomErrors => e
#handle it
end