0

我需要一些帮助来解决一个小问题。我有 2 个字符串需要按顺序排列Task Scheduler. 但我想捕捉System.FormatException当有人意外切换它们时发生的情况。

但无论发生什么,我总是遇到同样的错误。我还添加了一个问题,以防其中一个或两个都没有被放置。因为如果发生这种情况,System.IndexOutOfRangeException就会发生错误。基本上我的代码执行以下操作:

try
{
   //Processing the inputted parameters
}

catch(System.FormatException e)
{
   Console.WriteLine(e.Message);
}

catch(System.IndexOutOfRange.FormatException e)
{
   Console.WriteLine(e.Message);
}

我分别测试了这两个捕获。但无论哪种方式,我都会得到错误。

我看过一些示例,但这些示例是专门针对某些方法制作的。

如果有人可以帮助我解决这个问题,我将不胜感激!:)

编辑

当前捕获:

catch(Exception e)
{
   Console.WriteLine(e.Message);
   streamwriter.Close();
   filestream.Close();
}

编辑

错误:

Unhandled exception: System.FormatException: the format of the input string is incorrect.
at System.Number.StringToNumber < NumberBuffer String str, NumberStyles options, NumberFormatInfo info, Boolean & number, parseDecimal >
at System. Number. ParseInt32 < String s, NumberStyles style, NumberFormatInfo info >
at System. Convert. ToInt32 < String value > at LastWriteAccess_Checker. Program. Main < String [] args >

这都是指代码中的输入参数。一种被int转换为string.

4

1 回答 1

0

这回答了现在已编辑的原始问题,因此根据编辑,它可能不是一个合适的答案。

要捕获这两个异常并对它们做出反应,您可以编写此代码。

catch (Exception ex)            
{                
    if (ex is FormatException || ex is IndexOutOfRangeException )
    {
        Console.WriteLine(ex.Message);
    }
    else
    {
        throw;
    }
}
finally
{
    streamwriter.Close();
    filestream.Close();
}

您可以在 catch 处设置断点以查看实际捕获的异常是什么。

您应该关闭finally块中的资源,而不是catch

于 2013-10-11T13:27:31.640 回答