如何做好异常处理在我的代码(How to do exception handling in my c

2019-11-04 03:25发布

我刚刚得知异常处理。 所以,我仍然得到使用它。 我知道该怎么做了基本的异常处理就像进入分裂的正确值,有它抛出一个DividebyZeroException如果输入了不正确的值。

但我需要帮助做好以下一些帮助:

创建一个异常处理抛出,如果出现错误

1)的整数中的每一行中的数字是不彼此相等,例如:矩阵= [3 4; 9 8 1] 应该是 :矩阵= [3 4 2; 9 8 1]

2)分号 “;” 我用作为隔板是由无效的字符替换,例如:矩阵= [3 4 2#9 8 1]

这是我的代码:

这是我的主要在我创建的字符串。

string text = "A = [8 5 5 4; 2 6 5 3; 8 5 2 6]";

这是我的班

public string[,] Matrix(string text)
{
    try
    {
        char[] splitOne = { '[', ']' };
        char[] splitTwo = { ';' };
        char[] splitThree = { ' ' };
        words = text.Split(splitOne)[1]
                               .Split(splitTwo, StringSplitOptions.RemoveEmptyEntries)
                               .Select(x => x.Split(splitThree, StringSplitOptions.RemoveEmptyEntries))
                               .ToArray();
    }
    catch
    {
        Console.WriteLine("Try entering a correct string");

    }


    string[,] matrix = new string[words.Length, words[0].Length];
    for (int i = 0; i < words.Length; ++i)
    {
        for (int j = 0; j < words[i].Length; ++j)
        {
            matrix[i, j] = words[i][j];
        }
    }

    for (int i = 0; i < matrix.GetLength(0); i++)
    {
        for (int j = 0; j < matrix.GetLength(1); j++)
        {
            Console.Write("{0} ", matrix[i, j]);
        }
        Console.WriteLine();
    }
    return matrix;
}

我将如何让try和catch工作? 这是一个基本的包罗万象的,但我会怎么做它与我的如下要求正常工作。 现在,它不输出我的消息。

Answer 1:

你误会Exceptions ,要使用Exceptions的规则,你的数据结构。 取而代之的Exceptions是当错误occour的方法,因为你是用分0的数学运算。 这是一个严重的错误,这里的代码不知道该怎么办。

对于这个具体的例子,你应该做的if语句。 因为要应用的规则和执行它, Exceptions不符合这些使用情况很好,如果你在哪里实现它,你需要if语句来检查,如果你希望字符串规则适用于,你的标准后,也形成,之后抛出Exception 。 Moreso这是有道理的,如果你正在创建一个图书馆。

我的解决方案的代码应该是什么样子。

String text = "A = [8 5 3 4; 2 6 5 3; 8 5 2 3]";

var startIndex = text.IndexOf('[') + 1;
var length = text.IndexOf(']') - startIndex;
text = text.Substring(startIndex, length);

if(!text.Contains(";"))
{
    Console.WriteLine("malformed seperator");

    return;
}

var test = text.Split(';').Select((k, i) => new {Key = i, Value = k.Replace(" ", "").Length});


if(!test.All(x => x.Value == test.First().Value))
{
    Console.WriteLine("unbalanced array");
    return;
}

但我认为你正在你的自我更加努力地工作,那么你应该,你的设计意味着很多事情发展顺利,在字符串创建和使用已经建立矩阵库将在这里保存了大量的工作。

编辑

更新了解决方案的工作,但我仍然认为字符串矩阵的设计迫使很多方向是unecesary的代码。



文章来源: How to do exception handling in my code