Error handling 为什么julia除了我想抛出的错误之外还抛出LoadError

Error handling 为什么julia除了我想抛出的错误之外还抛出LoadError,error-handling,julia,Error Handling,Julia,如果我编写的脚本除了抛出这样一个错误之外什么也不做: throw(ErrorException("a useful message")) 我在执行脚本时出现以下错误 $julia throwError.jl 错误:LoadError:一条有用的消息 堆栈跟踪: [1] 顶级范围位于/path/throwerr.jl:1 [2] 包括(::函数,::模块,::字符串)在./Base.jl:380 [3] 在./Base.jl:368包含(::模块,::字符串) [4] exe

如果我编写的脚本除了抛出这样一个错误之外什么也不做:

throw(ErrorException("a useful message"))
我在执行脚本时出现以下错误

$julia throwError.jl
错误:LoadError:一条有用的消息
堆栈跟踪:
[1] 顶级范围位于/path/throwerr.jl:1
[2] 包括(::函数,::模块,::字符串)在./Base.jl:380
[3] 在./Base.jl:368包含(::模块,::字符串)
[4] exec_选项(::Base.jl选项)位于./client.jl:296
[5] _start()位于./client.jl:506
在表达式中,从/path/throwError.jl开始:1
我想知道为什么我的错误消息中会出现
LoadError:

我对其他错误类型也有同样的看法。例如:

throw(DivideError())
$julia throwError.jl
错误:LoadError:DivideError:integer除法错误
堆栈跟踪:
…同上。。。
这个问题中“为什么?”的完整答案相当复杂。一种回答方法是简单地参考文档字符串以了解
LoadError

对文件进行加密、加密或删除时出错。错误细节 应在
.error
字段中提供

因此,由于错误发生在julia尝试包含文件时,而不是在成功包含后调用文件中的函数时,因此错误被包装在
LoadError

但是Julia真的必须在
LoadError
s中包装错误吗?答案似乎是否定的,因为Julia的回溯已经改进,
LoadError
s不再是确保开发人员拥有关于错误位置的必要信息所必需的。从1.2 a之前开始。似乎还有一些事情需要解决,但我们希望很快就能解决它们

其他相关链接:

:合并PR:
确保语法错误位置出现在回溯中
-改进回溯,以便能够删除
加载错误

:解释不推荐的一些背景的注释
LoadError

交叉发布:
LoadError(file::AbstractString, line::Int, error)