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);
}

转载于:https://www.cnblogs.com/xmwang/archive/2011/09/26/2192297.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值