C#代码异常

时间:2015-06-30 15:08:47

标签: c# exception try-catch

我是c#的绝对初学者,我不知道这段代码有什么问题,需要一些帮助

        try 
        {
            double[,] matrix = new double[2,2];
            String liczba = "85481";
            matrix[1,1] = double.Parse(liczba); 
        }

        catch (Exception)
        {
            Console.WriteLine ("general exception");
        }
        catch (OverflowException)
        {
            Console.WriteLine ("exceeded scope of variable");
        }

        catch (FormatException)
        {
            Console.WriteLine ("variable converstion error");
        }

1 个答案:

答案 0 :(得分:2)

编译器可以帮助你解决这个问题。您将有两个看起来像这样的错误:

  

前一个catch子句已经捕获了这个或超类型的所有异常('System.Exception')

在不太具体的类型之后,您无法捕获更具体的Exception类型。从C# reference开始强调我的:

  

... catch子句的顺序很重要,因为 catch子句按顺序检查。在不太具体的例外之前捕获更具体的例外。 如果您订购了catch块,编译器会产生错误,以便永远无法访问以后的块

所有例外都来自ExceptionSystem.Exception)。重新排序它们以将Exception的处理程序作为最后一个catch子句并且它将编译:

try
{
    double[,] matrix = new double[2, 2];
    String liczba = "85481";
    matrix[1, 1] = double.Parse(liczba);
}        
catch (OverflowException)
{
    Console.WriteLine("exceeded scope of variable");
}
catch (FormatException)
{
    Console.WriteLine("variable converstion error");
}
catch (Exception)
{
    Console.WriteLine("general exception");
}