2010-10-19 144 views
0

我有类主要包括收集字符串输入,然后以特定格式输出数据。该类的结果基本上是一个ToString()覆盖。C#异常处理

与我的班级我有一个静态方法string Print(string path)从平面文件读取输入。然后解析这些输入并为平面文件中的每条记录生成一个类的实例。然后对于类的每个实例,我调用class.ToString()并将其追加到最终在Print()内返回的stringbuilder。

我确保每个记录都有必要的值并且有适当的范围,如果他们不需要抛出异常的话。我从来没有做过异常处理,所以我想知道我想要做什么甚至是可能的。我想要在stringbuilder中添加结束标记清理的东西,然后将异常文本预先加入到stringbuilder中,然后返回(Exception Error Text + stringbuilder.ToString()+ FooterStuff )。

编辑代码:

它可能实际上不是一个好主意,抛出一个异常,我可能只需要使用try {}赶上{}捕捉异常,然后exception.message追加到stringbuilder的开始。但我不知道,例外对我来说是相当新的。

public class Record 
{ 
    public string Name; 
    public string Value; 
    ... 

    private Dictionary<string, LogFormat> = new LogFormat.Table(); 

    public static string Print() 
    { 
      Stringbuilder sb = new StringBuilder(); 
      var k = ReadLog(); 

      foreach (var x in k) 
      { 
       sb.Append(x.ToString()); 
      } 

      return sb.ToString(); 
    } 

    public override string ToString() 
    { 
     if (Table[Name].NeedsValue && (Value == String.Empty || Value == null)) 
     { 
      throw new Exception(); 
     } 

     return String.Format(Table[Name].Format, Attribute, Value); 
    } 
} 

public class LogFormat 
{ 
    public string Format; 
    public bool NeedsValue = false; 

    public Dictionary<string,LogFormat> Table() 
    { 
      Dictionary<string,LogFormat> dct = new Dictionary<string,LogFormat>(); 
      dct.Add("Address", new LogFormat(){Format = "Street:{0}\nCity:{1}"}); 
      ... 
      return dct; 
    } 
} 
+0

发布您的代码...... – 2010-10-19 05:25:45

+0

好。给我一点时间。 – Shawn 2010-10-19 05:27:30

回答

0

你可以尝试这样的事情:

private string YourMethod() 
{ 
    var sb = new StringBuilder(); 

    try 
    { 
     // Do your stuff 
    } 
    catch (ASpecificException ex) 
    { 
     sb.Insert(0, ex.Message); 
    } 
    finally 
    { 
     sb.Append("YourFooter"); 
    } 

    return sb.ToString(); 
} 
0

您需要使用尝试捕捉块。看到这个reference

您可以在catch和finally块中执行所需的清理任务。

0

如果您的班级出现问题,您可以使用投掷语句。然后当你与你的工作类,你应该使用的try-catch-finally块

+0

我是否必须像自定义异常一样编写? – Shawn 2010-10-19 05:41:08

+0

你可以编写自己的自定义异常,它不是很难,但你并不需要。 .Net中有许多excepion类,它将覆盖您遇到的大多数情况。 http://msdn.microsoft.com/en-us/library/ms229064.aspx – Kieran 2010-10-19 05:57:34