我正在尝试定义自定义文件解析异常类,该异常类用于保存信息 - 文件名和发生异常的文件行。
class FileParseException : Exception {
string fileName;
long lineNumber;
public FileParseException() {
}
public string GetFileName() {
return fileName;
}
public long GetLineNumber() {
return lineNumber;
}
}
我应该如何存储当前文件的数据以及何时上升异常以通过thy-catch块访问它:
try {
// some code here
}
catch (FileParseException fpe) {
Console.WriteLine(fpe.getLineNumber);
}
答案 0 :(得分:2)
首先,C#具有属性,因此您应该使用它们,而不是创建GetXXX
方法。在您的情况下,具有私有设置器的公共自动属性应该完成这项工作:
public string FileName { get; private set; }
public long LineNumber { get; private set; }
您可以在异常的构造函数中设置它们:
public FileParseException(string fileName, long lineNumber)
{
FileName = fileName;
LineNumber = lineNumber;
}
要抛出此类异常,请使用上面的构造函数:
throw new FileParseException(fileName, lineNumber);
当你抓住它时,你可以访问属性:
catch (FileParseException fpe)
{
Console.WriteLine(
"Error in file {0} on line {1}.", fpe.FileName, fpe.LineNumber);
}
此外,您应该通过将消息传递给基础构造函数来设置异常的Message
:
public FileParseException(string fileName, long lineNumber)
: base(
string.Format(
"Error while parsing file {0} on line {1}.", fileName, lineNumber))
{
FileName = fileName;
LineNumber = lineNumber;
}