zoukankan      html  css  js  c++  java
  • 使用在类中定义的有返回值的函数,如何得到执行结果反馈?

    我们做开发时,程序执行完后最好会有个反馈结果,尤其是在庞大的程序中,如果有bug可以及时发现,不然很浪费时间...最近做sde的二次开发,创建数据集时要用到带有返回值的函数,因为在数据集上创建要素类需要用到这个数据集,声明一个全局变量,可以直接用这个返回值.但是在捕获错误方面受到了限制,因为有返回值的函数每一个节点都要有返回值,想直接得到反馈是不行的,想在方法执行后写结果反馈的代码是检测不到的.

     只能向师傅求救,给我提供了两种方法解决,感觉很巧妙.

    原来的代码:

    Form1中的代码:

    private void 创建数据集ToolStripMenuItem_Click(object sender, EventArgs e)
    {
    try
    {
    IWorkspace2 workspace = (IWorkspace2)Cls_SDE.OpenSde();
    string strDatasetName = txtFileName.Text;
    if (strDatasetName == "")
    {
    MessageBox.Show("请输入要创建的数据集名称!", "错误提示");
    return;
    }
    ISpatialReferenceFactory pSpatialReferenceFac = new SpatialReferenceEnvironmentClass();
    ISpatialReference pSpatialReference = pSpatialReferenceFac.CreateProjectedCoordinateSystem
    ((int)esriSRProjCS4Type.esriSRProjCS_Beijing1954_3_Degree_GK_CM_120E);
    gSdeFeatDs = Cls_SDE.CreateFeatureDataset(workspace, strDatasetName, pSpatialReference);

    }

    catch (Exception ex)
    {
    MessageBox.Show(ex.ToString());

    }

    }

    调用的类中的方法:

    public static IFeatureDataset CreateFeatureDataset(IWorkspace2 workspace, string strDatasetName, ISpatialReference spatialReference)
    {
    try
    {
    IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
    if (featureWorkspace == null)
    {
    return null;
    }

    if (isDatasetExist(workspace, strDatasetName))
    {
    return featureWorkspace.CreateFeatureDataset(strDatasetName, spatialReference);
    //MessageBox.Show("创建数据集成功!"); //因为已经有返回值了,此处的代码是检测不到的
    }
    else
    {
    MessageBox.Show("创建数据集失败!!!");
    return null;
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.ToString());
    return null;
    }

    }

    第一种方法:

    在方法中声明一个IFeatureDataset类型的变量,比如:IFeatureDataset ss;把执行函数中的return删除,将执行结果赋值给ss,加上反馈,在if函数外面return ss 

    修改后是这样:

    第二种方法就是在Form1中下功夫,原来的代码不变,在Form1中的函数中加一句if语句判断执行后的结果是否为null,很简单啊,为什么我想不到呢?

    悲观者更正确,乐观者更成长。时代大潮下,充满着机遇和风险。 目标不同,选择也就不同,人生没有标准答案,对大多数人而言,还是要不停地提高自己,这个世界什么都能快,但学习从来都没有捷径,或者说学习已是捷径。
  • 相关阅读:
    asp.net的Context.Cache缓存过期策略
    sql语句执行时算术运算导致溢出。
    sqlserver进行join的方式选择
    Apollo配置中心
    sqlserver的left join优化
    iis设置上传文件大小限制
    Android中的颜色值
    Network authentication method and device for implementing the same
    MongoDB GridFS
    MongoDB 正则表达式
  • 原文地址:https://www.cnblogs.com/youzi-xuchongyou/p/7338331.html
Copyright © 2011-2022 走看看