catch
ブロックでオブジェクトを使用したい場合は、try
ブロックで例外が発生します。私はint
にいくつかの文字列を解析しており、不可能であるときに例外をキャッチする必要があり、どのオブジェクトが間違っていて、どの行にあるのかを確認する必要があります。それは可能かどうか?キャッチの試行からオブジェクトを使用する方法 - C#
いくつかのコード例です。ありがとう。
static void Main(string[] args)
{
var result = Parse(new List<string>() { "3;5;7", "qwe;3;70" });
}
public static List<int[]> Parse(List<string> list)
{
try
{
return list.Select(str => str.Split(';'))
.Select(str => Tuple.Create(int.Parse(str[0]), int.Parse(str[1]), int.Parse(str[2])))
/// something happening
.ToList();
}
catch
{
//here in braces I want to know, which element was wrong
//"qwe" and whole line "qwe;3;70"
throw new FormatException($"Wrong line [{}]");
}
}
実際の 'Exception'オブジェクトを使用して必要なものすべてを手に入れることはできませんか? 'catch(Exception ex)'そしてcatchブロックの 'ex'変数を使って例外に関する情報を提供します。忘れてはならないことは、可能な限り例外タイプを特定して捕捉することです。たとえば、まずNullReferenceExceptionをキャッチしてから、最後にジェネリックなExceptionを最後に実行してみてください。 – gmiley
@gmiley例外は、解析に失敗した行のインデックスを持ちません。 – Servy
通常のfor-loopを使用し、try/catchのスコープ外に3つの文字列変数を作成し、それぞれの値を抽出して解析し、失敗した場合は変数 –