Skip to content

Commit 27eaa47

Browse files
committed
Use int.TryParse instead of int.Pare with try/catch
1 parent fe21542 commit 27eaa47

File tree

1 file changed

+9
-23
lines changed

1 file changed

+9
-23
lines changed

src/JsonPath.cs

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -128,20 +128,9 @@ public static string AsBracketNotation(string[] indicies)
128128
return sb.ToString();
129129
}
130130

131-
static int ParseInt(string str, int defaultValue = 0)
132-
{
133-
if (string.IsNullOrEmpty(str))
134-
return defaultValue;
135-
136-
try
137-
{
138-
return int.Parse(str, NumberStyles.None, CultureInfo.InvariantCulture);
139-
}
140-
catch (FormatException)
141-
{
142-
return defaultValue;
143-
}
144-
}
131+
static int? TryParseInt(string str) =>
132+
int.TryParse(str, NumberStyles.None, CultureInfo.InvariantCulture, out var n)
133+
? n : (int?) null;
145134

146135
sealed class Interpreter
147136
{
@@ -286,9 +275,9 @@ static IEnumerable<TraceArgs> Slice(string loc, string expr, object value, strin
286275

287276
var length = list.Count;
288277
var parts = loc.Split(Colon);
289-
var start = ParseInt(parts[0]);
290-
var end = ParseInt(parts[1], list.Count);
291-
var step = parts.Length > 2 ? ParseInt(parts[2], 1) : 1;
278+
var start = TryParseInt(parts[0]) ?? 0;
279+
var end = TryParseInt(parts[1]) ?? list.Count;
280+
var step = parts.Length > 2 ? TryParseInt(parts[2]) ?? 1 : 1;
292281
start = (start < 0) ? Math.Max(0, start + length) : Math.Min(length, start);
293282
end = (end < 0) ? Math.Max(0, end + length) : Math.Min(length, end);
294283
for (var i = start; i < end; i += step)
@@ -329,10 +318,8 @@ public bool HasMember(object value, string member)
329318

330319
var list = value as IList;
331320
if (list != null)
332-
{
333-
var index = ParseInt(member, -1);
334-
return index >= 0 && index < list.Count;
335-
}
321+
return TryParseInt(member) is int index
322+
&& index >= 0 && index < list.Count;
336323

337324
return false;
338325
}
@@ -347,8 +334,7 @@ public object GetMemberValue(object value, string member)
347334
return dict[member];
348335

349336
var list = (IList) value;
350-
var index = ParseInt(member, -1);
351-
if (index >= 0 && index < list.Count)
337+
if (TryParseInt(member) is int index && index >= 0 && index < list.Count)
352338
return list[index];
353339

354340
return null;

0 commit comments

Comments
 (0)