0

我在通过 IronPython 使用 C#/.NET 库运行 Gurobi 优化模型时遇到问题。

我有一种方法可以通过变量的名称(即 GRBModel.GetVarByName)访问变量,例如

    public GRBVar variable(i,t)
    {
        try 
        {
            GRBModel M = getModel();
            string varname = varname(i,t);
            GRBVar var = M.GetVarByName(varname);
            return var;
        }
        catch (GRBException ex)
        {
            System.Console.WriteLine(ex.ToString());
            throw new GRBException(ex.ToString());
        }
    }

问题是在我的 IronPython 脚本上,当我尝试访问一个不存在的变量时,什么也没有发生……消息没有出现在控制台上。我做错了什么???

4

2 回答 2

1

我认为您在某处缺少退货声明;如果您捕获到异常,则该方法不会返回。(在这种情况下不会出现 C# 编译器错误吗?)

如果此方法仅适用于 IronPython,您可以让异常传递到 IronPython 并在那里处理它。

于 2013-04-04T19:26:50.413 回答
0

根据Gurobi .NET 参考手册中的这个GRBException页面,继承自 .NET Exception类。要从Exception基础类获取错误消息,您应该使用Message属性而不是ToString()方法,默认情况下,该方法通常只显示引用类的类名。

换句话说,将catch子句更改为:

catch (GRBException ex)
{
    System.Console.WriteLine(ex.Message);
}

或者,您可以输出特定于该类的ErrorCode属性。GRBException

于 2013-04-04T17:55:41.900 回答