Vom finally
Abschnitt hier: http://docs.julialang.org/en/release-0.4/manual/control-flow/#finally-clauses, verwenden sie dieses Beispiel:Warum blockiert schließlich Fehler?
f = open("file")
try
# operate on file f
finally
close(f)
end
Wenn ich einen ähnlichen Code in REPL laufen, dies geschieht:
julia> f = open("myfile.txt")
IOStream(<file myfile.txt>)
julia> try
sqrt(-10)
finally
close(f)
end
ERROR: DomainError:
[inlined code] from none:2
in anonymous at no file:0
Jede Idee, was ist der Unterschied?
Warum bekomme ich den Fehler? Ich denke, es ist irreführend, da es so aussieht, als ob es etwas mit der Datei zu tun hat, die geöffnet wurde, aber tatsächlich über sqrt (-1) ist? – 4thSpace
Ja, genau. 'sqrt (-1)' ist ein 'DomainError', weil' sqrt' ein 'Float64' zurückgibt. Der Code würde gut funktionieren, wenn er 'sqrt (-1 + 0im)' wäre. –