[英]C# Exception Handling
我的类主要由收集字符串输入组成,然后以某种格式输出数据。 该类的结果基本上是一个ToString()重写。
对于我的班级,我有一个静态方法string Print(string path)
,它从平面文件中读取输入。 然后,它解析这些输入并为平面文件中的每个记录生成一个类的实例。 然后,对于该类的每个实例,我调用class.ToString()并将其附加到最终在Print()
返回的stringbuilder。
我确保每条记录都具有必要的值并具有适当的范围,如果不需要,则需要引发异常。 我以前从未做过异常处理,所以我想知道我想做的事是否可能。
当引发异常情况时,我想获取stringbuilder中的所有内容,添加结束标记清除内容,然后将异常文本放在stringbuilder之前,然后返回(异常错误文本+ stringbuilder.ToString()+ FooterStuff)。
修改代码:
引发异常实际上并不是一个好主意,我可能只需要使用try {} catch {}来捕获异常,然后将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;
}
}
我不确定您要实现什么,但是听起来好像您finally
想使用
http://msdn.microsoft.com/en-us/library/zwc8s4fz(VS.71).aspx
您需要使用try catch块。 请参阅此参考 。
您可以在catch中执行所需的清理任务,最后执行阻止。
在班级中,如果班级出了问题,可以使用throw语句 。 然后在上课时,您应该使用try-catch-finally块
你可以试试这样的东西:
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.