忽略Scala编译错误,如Java
如何像使用Java一样跳过scalac编译错误 这会导致编译器跳过错误文件,编译其余文件,并将崩溃留给运行时处理 我使用SBT,但由于它使用scalac,我认为它将是从SBT传递过来的scalac的命令行参数 更新: 我的目标是运行程序,并在达到错误时使其在运行时失败 例如,可以有一个没有错误的主GUI,它有一个按钮来启动一个有错误的服务器 在Java中,当单击启动服务器的按钮时,GUI将在运行时运行并失败 在Scala中,程序甚至不会运行,因为GUI文件无法在服务器文件编译之前编译 您的请求违反了Scala的原则(请不要这样做) 这在Scala中是不可能的,因为这违背了Scala中的一个设计原则:当程序编译时,不会出现运行时错误。当然,这一原则并不适用于所有极端情况。但人们正在努力覆盖所有常见案例忽略Scala编译错误,如Java,java,scala,compilation,Java,Scala,Compilation,如何像使用Java一样跳过scalac编译错误 这会导致编译器跳过错误文件,编译其余文件,并将崩溃留给运行时处理 我使用SBT,但由于它使用scalac,我认为它将是从SBT传递过来的scalac的命令行参数 更新: 我的目标是运行程序,并在达到错误时使其在运行时失败 例如,可以有一个没有错误的主GUI,它有一个按钮来启动一个有错误的服务器 在Java中,当单击启动服务器的按钮时,GUI将在运行时运行并失败 在Scala中,程序甚至不会运行,因为GUI文件无法在服务器文件编译之前编译 您的请求违
如果Scala编译器将提供你所请求的,我会认为它是编译器中的一个错误。< /P> 如何让它工作(如果你仍然想做) 当然,没有人会阻止您运行带有编译错误的程序。这在一定程度上是可能的
我和我的团队为一位客户开发了一种定制编程语言,包括一个运行时和一个IDE(基于)。在早期版本中,我们有一个编译器,可以编译有语法错误的文件。它只是在需要时添加额外的标记(右括号、关键字、缺少的字符串或数字),直到语法再次正常为止。这种工具对于有编译错误的文件中的语法突出显示和完成非常有用(例如,因为该文件当前正在进行中,并且缺少某些部分)。但是当你运行编译器产生的结果时,结果往好里说是滑稽的,往坏里说是灾难性的。我们很快更改了编译器,因此当源代码中出现任何错误时,它将不再发出可运行的代码。您希望如何处理此问题?Scala应该如何处理无法编译的文件?@stefan.schwetschke我的目标是运行程序,并在运行时遇到错误时使其失败。现在用例子更新帖子。投票结束一个合法的问题?如果你能提供你投票的理由,我很乐意更新我的帖子。特别是这个问题,很多来自Java的人都会问。谢谢你写的这么好的帖子。请允许我不同意设计原则。拥有在运行时不会失败的代码是程序员的工作。编译器可以纠正语法错误,但不能总是纠正逻辑错误。编译器应该能够跳过语法错误,同时通知程序员语法错误。程序员的工作是检查这些错误。我知道Java将允许这一点,它是一种非常成熟的语言。我正在研究eclipse编译器如何跳过错误,以及是否可以使用Scala进行模拟。我应该说编译器可以通知语法错误,而不是纠正语法错误。作为这个问题的解决方案,我想知道是否可以让编译器注释掉非编译行,并通知它们已被跳过,如果在运行时到达,则抛出异常。您说过如果不编译,可以跳过包,那么为什么不应该跳过单个文件或行?@BAR完整的编译单元,而不是它们的一部分(包、文件或行)。编译单元是一组可以自己编译的文件。实际上,您会多次运行scalac,每个编译单元一次。如果编译单元中有任何错误,scalac将失败,并且不会为该编译单元创建任何二进制(类)文件。这是有意义的。尽管我想知道如何跳过编译单元。我有一个没有被任何其他文件使用的文件,因此是一个编译单元,它停止编译,因为它有错误。我需要一个命令行钩子吗?你能提供一个源代码吗?“…因为它违背了Scala中的一个设计原则:当程序编译时,不会出现运行时错误。”