到目前为止,这是我的语法:
static void Main(string[] args)
{
// create a writer and open the file
System.IO.StreamReader reader =
new System.IO.StreamReader("c:\\Numbers.txt"); ;
// open file in Output
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Output.txt"))
{
string line;
int Count = 1;
while ((line = reader.ReadLine()) != null)
{
int y = Int32.Parse(line);
if ((y % 2) == 0)
{
file.WriteLine(" Number " + y + " in line " + Count + " is even ");
}
else
{
file.WriteLine(" Number " + y + " in line " + Count + " is odd ");
}
Count++;
}
file.Close();
reader.Close();
}
}
我需要调用输出以下行的异常:
FormatException - 输入字符串的格式不正确。,行号= 10,字符串= ABC
OverflowException - 对于Int32,值太大或太小。行号= 11,字符串= 123456789012345678901234567890
FormatException - 输入字符串的格式不正确。,行号= 14,字符串= 4.0
任何人都可以帮助编写这些例外的地点和方法。
答案 0 :(得分:1)
抛弃现有的例外System.FormatException
或System.OverflowException
:
throw new FormatException("my message");
如果您只想向用户显示错误消息,请考虑使用消息框:
MessageBox.Show("my message");
答案 1 :(得分:0)
修复代码的最佳方法可能是使用int.TryParse而不是int.Parse。
http://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx
如果输入不是字符串,可能最简单的方法是尝试解析为小数: - 如果仍然失败 - >不是数字 - 否则它是一个数字但不是int
答案 2 :(得分:0)
我的猜测是,您不希望有异常,但输出中包含有关每行包含错误的信息:
while ((line = reader.ReadLine()) != null)
{
int y;
if (int.TryParse(line, out y)) {
if ((y % 2) == 0)
{
file.WriteLine(" Number " + y + " in line " + Count + " is even ");
}
else
{
file.WriteLine(" Number " + y + " in line " + Count + " is odd ");
}
} else {
file.WriteLine(String.Format("Invalid formatted string in line number {0}: {1}", Count, line));
}
Count++;
}
当然,您可以添加一些额外的检查 - 但基本上您应该避免抛出异常,如果您希望某些行无效或者您希望通过一些注释优雅地跳过这些行。
以下是关于何时使用例外的好答案:When to throw an exception?