C# C语言中的异常处理变通方法
我试图解析一些字符串。因为我是C语言的新手,所以我很好奇,你可以在下面看到 当Lines\u数组[i]为emptyLines\u数组[i].Length==0时,将引发异常。这已经是我在示例2中想要的,在示例1中是无用的 我想摆脱例外。因为零长度的字符串将是我的极限。是否有任何解决方案、替代方案或解决方法 例1:C# C语言中的异常处理变通方法,c#,exception,exception-handling,C#,Exception,Exception Handling,我试图解析一些字符串。因为我是C语言的新手,所以我很好奇,你可以在下面看到 当Lines\u数组[i]为emptyLines\u数组[i].Length==0时,将引发异常。这已经是我在示例2中想要的,在示例1中是无用的 我想摆脱例外。因为零长度的字符串将是我的极限。是否有任何解决方案、替代方案或解决方法 例1: try { if (Lines_Array[i + 6].Substring(p, 7).Trim() == "") break; } catch (Argum
try
{
if (Lines_Array[i + 6].Substring(p, 7).Trim() == "")
break;
}
catch (ArgumentOutOfRangeException) { break; }
例2:
我需要找出每一页有多少行。
我需要数数,直到看到箭头所示的线为止。但它抛出了一个例外。
截图:
try
{
while (Lines_Array[i + k].Substring(2, 5).Trim() == "Groze")
{
bedensay++;
k++;
}
}
catch (ArgumentOutOfRangeException) { }
提前感谢。如果您不希望框架引发异常,只需在处理之前检查字符串的长度:
var line = Lines_Array[i + 6];
if (string.IsNullOrEmpty(line))
{
// Handle empty or null string.
}
else
{
// Handle non-empty string...
}
您不应该使用异常来控制程序流。相反,首先要避免它们。还要注意的是,在一行中执行一条语句,而不连接它们是一种更好的编程风格——这将提高可读性,如果您单步执行代码,则更容易调试 例如:
int index = i + k;
if (index >= Lines_Array.Length)
{
break;
}
else
{
var line = Lines_Array[index];
if (string.IsNullOrEmpty(line))
{
// break; or whatever you need to ...
}
else
{
// if (line.Substring ... ) and so on
}
}
添加一个检查,查看Lines_数组长度是否为0。按如下方式修改代码:
try
{
if(Lines_Array.Length != 0)
{
while (Lines_Array[i + k].Substring(2, 5).Trim() == "Groze")
{
if(Lines_Array.Length <= (i + k))
{
bedensay++;
k++;
}
}
}
}
catch (ArgumentOutOfRangeException) { }
你的问题似乎有点不清楚,你想做什么?正如前面提到的,Q是不清楚的。如果您只是想避免ArgumentOutOfRangeException,只需在获取所需子字符串之前添加一个Lines\u数组长度检查。您熟悉for和/或foreach构造吗?这似乎比一段时间更合适。你到底想做什么?我对这些循环很熟悉,但范围各不相同。这就是我试图找出存在多少行内容的地方。我选择while的原因是不扫描所有数组。这是一个非常大的阵列,从文件中扫描,当我向下移动时,我需要每个部分的结果。4/1对于您的示例,4/4/1对于我的示例给定原始问题,我假设ArgumentOutOfRangeException是由SubString方法引起的。