如何定义保存数据的自定义解析异常
本文关键字:自定义 异常 数据 保存 何定义 定义 | 更新日期: 2023-09-27 18:26:02
我正在尝试定义自定义文件解析异常类,它保存信息-文件名和发生异常的文件行。
class FileParseException : Exception {
string fileName;
long lineNumber;
public FileParseException() {
}
public string GetFileName() {
return fileName;
}
public long GetLineNumber() {
return lineNumber;
}
}
我应该如何存储当前文件的数据,以及当它引发异常以通过捕获块访问它时:
try {
// some code here
}
catch (FileParseException fpe) {
Console.WriteLine(fpe.getLineNumber);
}
首先,C#有属性,所以应该使用它们,而不是创建GetXXX
方法。在您的情况下,具有私有setter的公共自动属性应该完成以下工作:
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;
}