Dynamics Ax 2009,异常处理

5
在我的x++代码中,我有以下内容。
void run() {
    try
    {
        startLengthyOperation();
        this.readFile();    
    }
    catch (Exception::Deadlock)
    {
        retry;
    }
    catch (Exception::Error)
    {
        error(strfmt("An error occured while trying to read the file %1", filename));
    }
    catch
    {
        error("An unkown error has occured");
    }

    endLengthyOperation();
}

我遇到了最终的异常(之前没有收到任何异常消息)。但是我想知道真正发生了什么并导致了异常。我该如何找出异常的原因?

3个回答

5

0

这很可能是Exception::CLRError,如果是的话,您可以选择重新抛出错误以查看问题:

throw error(AifUtil::getClrErrorMessage());

或者 Exception::Internal,然后是类似这样的内容:

System.Exception e = CLRInterop::getLastException();
if (e)
    throw error(e.ToString());

或者是 Exception::CodeAccessSecurity 或其他任何错误 - 你需要先展示从 this.readFile() 返回的代码。当你在调试代码时,哪一行引起了错误?


0
几件事情: - 就我所知,死锁会捕获数据库请求中的死锁。不确定readFile在做什么,但它听起来不像是在查询数据库。 - startLengthyOperation(和end)方法是为了在长时间操作期间使鼠标光标看起来像沙漏。
不确定readFile在做什么。当我想到AsciiIO和TextIO时,它们通常会读取某些内容,因此我只能假设您正在readFile中执行此操作。 我倾向于进行以下检查: 检查文件路径是否为空。 使用FileIOPermission断言读取或写入。 使用文件路径作为输入创建AsciiIO或TextIO对象的实例。 检查对象是否有效,如果无效则提醒用户。
希望这可以帮助您,如果有用,请投票。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接