在try catch块中处理异常

时间:2017-05-29 17:28:06

标签: axapta dynamics-ax-2012 x++ dynamics-ax-2012-r2 dynamics-ax-2012-r3

我有一个切换案例场景,我事先知道用户可能没有使用正确的类别设置规则的机会很高。一旦我可以弹出一个对话框,显示说明如何运行该程序,它对我来说完全没问题。但是我错过了一些东西,这是我的问题。

当我按照上面的方式测试场景时,光标会经过默认情况,然后弹出错误。我如何让它进入我的捕获块?

try  
{
    switch (userInput)
    {
        case 1:
        case 2:
        case 3:
            if (condition)
            {
               some code here
            }
            else
            {
                throw error();
            }
            break;
        case 4:
            postingType = smth;
            break;
        default:
            throw Global::error("here blows the error and does not move on to the catch");
    }
}
catch(exception::Error)
{
    info("test");
}

非常感谢您的帮助!

提前谢谢你,祝你有个美好的夜晚。

小时。

2 个答案:

答案 0 :(得分:2)

原因是异常通常不会在数据库事务中捕获。我在the thread about the same question in the Dynamics community forum中更详细地解释了它,并将其标记为经过验证的答案。

答案 1 :(得分:0)

我不知道axapta,但逻辑上看起来你可以实现这种行为而不会抛出错误(这可能是一个更好的主意,因为这实际上是一个验证错误,而不是一个应用程序错误)。

怎么样:

  switch (userInput)
  {
    case 1:
    case 2:
    case 3:
        if (condition)

        {
           some code here
        }
        else
        {
            throw error();
        }
        break;
    case 4:
        postingType = smth;
        break;
    default:
        info("test");
        //handle invalid user input here.
        break;
  }