如果您有一个用户不知道数据类型的蛮力搜索,那么我们可以做这样的事情吗?

        if (search.Length > 0 && comboBox1.Text.Equals("Data Type Not Known"))
        {
            try
            {
                ParentGraph p = new ParentGraph(search);
            }
            catch (NoDataFoundException ndfe)
            {
                //it fails so try different data type
                try
                {
                    CompoundGraph c = new CompoundGraph(search);
                }
                catch(NoDataFoundException ndfe)
                {
                    //failed so try final type
                    try
                    {
                        BatchGraph b = new BatchGraph(search);
                    }
                    catch(NoDataFoundException ndfe)
                    {
                        MessageBox.Show("Data could not be linked to a particular search")
                    }
                }
            }
        }

最佳答案

这会起作用,但它在两个方面很丑陋:

  • 感觉代码重复是个坏主意……你能不能有某种 List<T>,例如List<Func<string, object>> 并依次尝试每个工厂委托(delegate)?
  • 如果找不到数据是合理的,应该也不异常(exception)。考虑编写工厂方法而不是构造函数,如果没有找到数据,则返回 null ......或者有一个带有 out 参数和 TryGetData 返回值的 bool (或者可能只是一个元组返回值)。处理这个有异常(exception)的流程对我来说并不合适。
  • 关于c# - 在这种情况下,嵌套的 try 捕获是否合理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5816457/

    10-12 22:34