ArcObjects编程方法(九):错误处理与调试

版本:ArcGIS 10

 

错误处理是编写健壮程序的重要部分,它可以防止程序遇到异常时崩溃。.NET采用Try, Catch, Finally结构来捕获异常,防止程序崩溃。ArcObjects基于COM技术,遇到异常时,会以HRESULTS形式返回错误,并返回给COMException。

Try, Catch, and Finally结构

该结构可以用来捕获程序中抛出的异常:

[C#]

try
{
    IEnvelope env = new EnvelopeClass();
    env.PutCoords(0D, 0D, 10D, 10D);
    ITransform2D trans = (ITransform2D)env;
    trans.Rotate(env.LowerLeft, 1D);
}

catch (System.Exception ex)
{
    MessageBox.Show("Error: " + ex.Message);
}

finally
{
    // Clean up the code.
}

一个try语句可以对应多个catch语句,用来捕获不同类型的异常:

[C#]

catch (DivideByZeroException divEx)
{
    // 除以0时,异常处理
}

catch (System.Exception ex)
{
    // 一般异常处理
}

COM组件错误处理

当COM组件遇到错误时会返回以HRESULT结构返回错误信息,HRESULT被增加到COMException实例中,进而就可以用try, catch结构来处理COM异常:

[C#]

try
{
    IEnvelope env = new EnvelopeClass();
    env.PutCoords(0D, 0D, 10D, 10D);
    ITransform2D trans = (ITransform2D)env;
    trans.Rotate(env.LowerLeft, 1D);
}

catch (COMException COMex)
{
    if (COMex.ErrorCode ==  - 2147220984)
        MessageBox.Show("You cannot rotate an Envelope");

    MessageBox.Show("Error " + COMex.ErrorCode.ToString() + ": " + COMex.Message);
}

catch (System.Exception ex)
{
    MessageBox.Show("Error: " + ex.Message);
}
posted @ 2011-09-26 21:35  xmwang  阅读(733)  评论(0编辑  收藏  举报