正在更改C#中System.Exception()的错误消息



我刚刚开始学习C#中的错误处理和异常,并且我正在尝试找到一种方法,如果我使用throw new System.Exception(),则设置特定的错误消息。

例如,我有一个类,在其中我定义了一个自定义数据类型Vector,我包含的方法之一是基于索引来SetGetVector(实际上只是1D数组(中的值。如果由于某种原因传递了一个无效的索引(例如,索引<1或大于向量的大小(,我想抛出一个异常。

例如。

Vector v = new Vector(3); //initialize a vector with 3 components
v[4] = 1; //try to store value in memory outside the range of the vector

在Vector类代码中,我尝试了如下操作:

try
{
if(index < 0 || index >= vector.length)
{
throw new System.Exception("Invalid index used to set vector component value"); //throw exception with new message
}
}
catch (Exception e)
{
Console.Writeline("Message: {0}", e.Message);
}

在我看来,这将在控制台中显示新消息">用于设置矢量分量值的无效索引";而是只显示与CCD_ 6〃相关联的消息索引在数组的边界之外";。

有人能解释一下这样做的正确方法是什么吗?我知道我可以只使用IndexOutOfRangeException()并将其留在那里,但我真的希望能够编写自己的错误消息,这样它们可以更容易地进行故障排除。提前谢谢!

编辑

有人指出,我抛出异常的if条件是问题所在,我将第二个条件设置为>,而它应该是>=。我已经修复了它,现在它像预期的那样工作。

然后不要先catch泛型异常。。而是先捕获特定的异常,然后捕获一般异常

catch (IndexOutOfRangeException e)
{
Console.Writeline($"Message: {e.Message + "t" + "Invalid index used to set vector component value"}");
}
catch (Exception e)
{
Console.Writeline("Message: {0}", e.Message);
}

相关内容

最新更新