メソッドでListまたはintを返すことはできますか?C#戻り値とエラー処理
ような何か:
- それが成功した場合:戻りリスト
- を、それが失敗した場合:リターンint型(つまり、エラー番号を示します)、または、エラーメッセージの文字列を。
(例外はありませんが、値は正しくありません。たとえば、PointF.X = 0または最低値が10以上です)。
は今、私はこのようにそれをやっている:私はこのようにそれを行うと
public List<PointF> GetContourInfoFromFile(string a_file)
{
ListContourPoints.Clear();
List<string> textLines = new List<string>();
bool inEntitiesPart = false;
bool inContourPart = false;
try
{
foreach (string str in File.ReadAllLines(a_file))
{
textLines.Add(str);//Set complete file in array
}
for (int i = 0; i < textLines.Count; i++)
{
//read complete file and get information and set them in ListContourPoints
}
//Check Coordinate values
for (int i = 0; i < ListContourPoints.Count; i++)
{
//Coordinates are below -1!
if (ListContourPoints[i].X < -1 || ListContourPoints[i].Y < -1)
{
ListContourPoints.Clear();
break;
}
//Lowest X coordinate is not below 10!
if (mostLowestXContour(ListContourPoints) > 10)
{
ListContourPoints.Clear();
break;
}
//Lowest Y coordinate is not below 10!
if (mostLowestYContour(ListContourPoints) > 10)
{
ListContourPoints.Clear();
break;
}
}
}
catch (Exception E)
{
string Error = E.Message;
ListContourPoints.Clear();
}
return ListContourPoints;
}
、私は、TEの値に異常があると知っている..しかし、具体的ではないものを。
どうすればこの問題を解決できますか?リストOR文字列/ intを返すことができない場合は、最適な解決策は何ですか?
は、検証は、あなたが言及したエラー番号を与えることができます多分カスタム例外を失敗したときに例外を自分で投げますか? – Stefan
はい、値が範囲外の場合は、実際に例外をスローする必要があります。また、これらの値がユーザによって入力された場合は、 'GetContourInfoFromFile()'に渡す前に入力をサニタイズするための別の検証メソッドが必要です(検証メソッドは例外をスローする必要はありません。成功時には 'null'、失敗時にはエラーメッセージ文字列を返すことができます。 –
ファイル内の値が正しくない場合は、通常の動作を終了する必要があります。例外は良い解決策です。しかし、ファイルが正しくないことをユーザーに通知するために、例外がより高いレベルで捕捉されていることを確認する必要があります。 –