构造函数中的异常

时间:2015-01-05 22:14:10

标签: c#

我需要有人告诉我这张图片的含义:

我试图了解它并创建了一些测试代码。我在构造函数中添加了trycatchfinally块,效果非常好!

那有什么不对?

(我试过的源代码:只是一个测试)

class Numbers
{
    public Numbers()
    {
        try
        {
            int[] array = new int[5];
            for (int i = 0; i < 10; i++)
            {
                array[i] = i;
                // here obviously an IndexOutOfRangeException will be thrown.
            }
        }
        catch
        {
            MessageBox.Show("Exception Thrown");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

提示说,在构造函数中不能编写任何可能产生异常的代码是非常理想的,因为这可能导致代码内部混乱,难以消耗类型和因为这不是一种常见的做法(在大多数情况下避免使用这种代码相当容易),您的类型的消费者不会期望来自此实例的那种行为。

即使在你的情况下,在这里玩恶,我可以说你的try/catch/finally并未涵盖所有可能的情况,因为StackOverflowMemoryOverflow之类的例外无法被捕获。