[英]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.