Gurobi API Exceptions (GRBException) with IronPython

本文关键字:with IronPython GRBException API Exceptions Gurobi | 更新日期: 2023-09-27 18:07:29

我有一个问题运行一个Gurobi优化模型使用c#/。. NET库。

我有一个方法来访问变量,虽然他们的名字(即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脚本,当我试图访问一个不存在的变量,什么都没有发生…该消息不会出现在控制台上。我做错了什么??

Gurobi API Exceptions (GRBException) with IronPython

我想你错过了一个返回语句的地方;如果捕捉到异常,则该方法不会返回。(c#编译器在这种情况下不会出错吗?)

如果这个方法只适用于IronPython,你可以让异常传递给IronPython并在那里处理它。

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

也就是说,将catch子句更改为:
catch (GRBException ex)
{
    System.Console.WriteLine(ex.Message);
}

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