如何使用 IronRuby 的 ErrorListener

2023-12-03

我有一个 C# 程序来执行 IronRuby 脚本。但在这样做之前,我想先编译该文件,看看是否有任何错误。但ErrorListener 似乎不能很好地工作。我的代码有什么问题吗?

class Program
{
    static void Main(string[] args)
    {
        try
        {
            ScriptEngine engine = null;
            engine = Ruby.CreateEngine();

            ScriptSource sc = engine.CreateScriptSourceFromFile("MainForm.rb");
            ErrorListener errLis = new MyErrorListener();
            sc.Compile(errLis);
    }
}

class MyErrorListener : ErrorListener
{
    public override void ErrorReported(ScriptSource source, string message, Microsoft.Scripting.SourceSpan span, int errorCode, Microsoft.Scripting.Severity severity)
    {
        Console.WriteLine(message);
    }
}

红宝石文件:

require "mscorlib"
require "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
require "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

include System::Windows::Forms
dfasdf error here
class MainForm < Form
def initialize()
    self.InitializeComponent()
end

def InitializeComponent()
    # 
    # MainForm
    # 
    self.Name = "MainForm"
    self.Text = "HelloRubyWin"
end
end

你试图做的事情似乎实际上不起作用。但不确定这是否是一个错误。

要解决此问题,只需执行 try/catch 块内的代码并查找 MissingMethodExecption。请注意,如果语法错误位于方法内部,这也无济于事,因为 IronRuby(或任何其他动态语言)在实际执行“嵌套”代码之前不会对“嵌套”代码执行任何操作。

所以总的来说,我认为你不会从你想做的事情中获得很多价值。

try/catch 代码示例:

ScriptEngine engine = null;
engine = Ruby.CreateEngine(x => { x.ExceptionDetail = true; });         

ScriptSource sc = engine.CreateScriptSourceFromFile("MainForm.rb");
ErrorListener errLis = new MyErrorListener();
sc.Compile(errLis);

try
{
    dynamic d = sc.Execute();
}
catch (MissingMethodException e)
{
    Console.WriteLine("Syntax error!");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 IronRuby 的 ErrorListener 的相关文章

  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • Animationend 事件未在 :after 元素上触发

    我在 after 元素上设置了一个动画 并在animationend 事件上设置了一个事件处理程序 但是 animationend 事件在 IE10 IE11 中永远不会触发 document ready function var test
  • PhantomJS 节点 - page.open - 无法跟踪多个页面

    我在用着幻影节点将节点与 PhantomJS 接口 我正在尝试并行打开页面 但问题是page open回调函数不会传回对页面的引用 因此我无法知道哪个页面已完成 相关代码 self queue j page open call self q
  • 计算记录在数据库表中出现的最大次数

    我无法找到正确的 mysql 函数 但我试图找到单个记录相对于所有其他记录出现在数据库中的最大次数 例如 ID 1 2 2 2 3 3 我想要实现的查询的理想返回是3 1的计数是1 2的计数是3 3的计数是2 所以返回任何id的最大计数 不
  • PHP 中的数据网格[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我需要使用 php 作为后端编程语言在 Web 应用程序中创建一个数据网格 该数据网格将从 MySQL 数据库对象 视图 存储过程 填充 最终用户应该能够编辑此数据网格中的数据
  • Java super() 继承

    问题的简短摘要 我有一个由子类扩展的父类 public class Parent public Parent constructor logic 这个子类使用 super 调用父类的构造函数 public class Child exten
  • Flutter 是否能够在运行时动态加载和构建 widget?

    有没有什么可以让我在某个服务器上存储多个 dart 文件并在运行时检索这些文件中的任何一个 以便 Flutter 能够从它收到的文件构建特定的小部件 您无法动态加载 dart 文件或创建新类 不 另一方面 小部件树是在运行时创建的 并且小部
  • 停止 Qt 线程:调用 exit() 或 quit() 不会停止线程执行

    在 main 中创建了一个 QThread 即主线程 将工作类移至新线程 线程执行工作类的 StartThread 方法 工人线程 header file class Worker public QObject Q OBJECT publi
  • 用于读取输入文本文件并为输入文本文件的每一行创建文本文件的批处理脚本[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 询问代码的问题必须对所解决的问题表现出最低限度的了解 包括尝试的解决方案 为什么它们不起作用以及预期结果 也可以看看 Stack Overflow 问题清单 这个问题似乎不是关于主要
  • UIDocumentInteractionController 删除操作菜单

    我一直在使用 Apple 示例代码来从此处查看文档 https developer apple com library ios samplecode DocInteraction Listings ReadMe txt html 我已经删除
  • 如何设置 PHP 的环境变量?

    我正在使用WAMP 我想从命令提示符使用 php PATH 环境变量中的条目是什么 您需要将 PHP 目录添加到您的路径中 在命令行上 例如在批处理文件中 它看起来像这样 SET PATH PATH C your wamp path php
  • 按 Java 8 中的可比 Bean 属性排序

    是否有比此模式更短的方法来使用 Java 8 流按可比属性进行排序 collection stream sorted a b gt a getProp compareTo b getProp 是的 你可以使用方法参考为了这 collecti
  • 方括号前面的逗号 - MDN 文档

    MDN是我的主要 Javascript 资源 我经常看到这样的符号 currentValue index array as in let new array arr map function callback currentValue in
  • Jquery 基于选择文本的条件验证

    我只想在 select1 字段中选定的文本为 其他 时才需要 其他 字段 我正在尝试的规则是 other required function element return select1 option selected text Other
  • 单个按钮 tkinter 的多个操作

    我一直在使用 matplotlib 和 tkinter 为基于 GUI 的绘图仪编写一个程序 我为一些选项添加了一个顶层窗口 我想执行一个函数并在单击按钮后退出顶层窗口 那可能吗 我面临的问题是我使用了必须从主窗口调用的顶级窗口 所以我定义
  • 如何转换 FParsec 解析器来解析空格

    我正在实现一个解析器 它使用 FParsec 将注释视为空白 看起来它需要一个简单的解析器转换 但我还不知道如何实现它 这是我试图进行类型检查的代码 let whitespaceTextChars t r n Read whitespace
  • 从c#中的excel文件中读取列名

    我必须实现文件上传功能 允许用户上传包含表格数据的文件 上传文件时我想找到表的列名 我怎样才能做到这一点 vc 74我想指出代码中的一些错误 而不是有sheetColumns Rows 应该有sheetColumns Columns因为它已
  • 即使使用缓存控制,来自云端的 RefreshHit:max-age=0,无存储

    Cloudfront 正在为根本不应该缓存的请求获取 RefreshHit 它不应该被缓存 因为 It has cache control max age 0 no store 最小 TTL 为 0 和 我创建了多个失效 在 所以这个缓存的
  • 出现异常:java.util.ServiceConfigurationError

    运行我的应用程序时出现以下异常 我正在使用jboss 5 1 1和jdk 1 6 01 50 04 828 ERROR HelloWorld Servlet service for servlet HelloWorld threw exce
  • 加载 rgdal 时出错

    我已经成功安装了rgdal与依赖项 GDAL 和 Proj4 一起打包 安装后我成功地将包加载到R中library功能 但是 在我最近一次登录后 当我输入命令时library rgdal 我收到一条错误消息 Error package or
  • 如何使用 IronRuby 的 ErrorListener

    我有一个 C 程序来执行 IronRuby 脚本 但在这样做之前 我想先编译该文件 看看是否有任何错误 但ErrorListener 似乎不能很好地工作 我的代码有什么问题吗 class Program static void Main s