Beschouw het volgende codefragment:
int index = FindClosestIndex(frame);
if (_data[index].Frame == frame)
return _data[index];
else
return interpolateData(frame, _data[index - 1], _data[index]);
Nu heb ik in dit geval wat controle uitgevoerd voordat dit codeblok om zeker te zijn dat FindClosestIndex()
nooit 0 zal retourneren. Het zou onmogelijk moeten zijn. De logica in FindClosestIndex
is echter enigszins ingewikkeld, dus het is heel goed mogelijk dat een bug nog moet worden ontdekt in een zeldzame hoekcase die niemand had verwacht, en hoewel mijn code correct is, FindClosestIndex
retourneert ten onrechte 0.
Als het 0 retourneert, krijg ik een ArgumentOutOfRangeException op de instructie _data [index - 1]
. Ik zou die uitzondering kunnen laten opborrelen, maar ik zou dit liever doen:
if (index == 0)
throw new ApplicationLogicException("There is a bug that caused FindClosestIndex to return an int <= 0 when it shouldn't have.");
Zou u deze praktijk aanraden om een aangepaste uitzondering te maken als uw code een foutstatus detecteert? Wat doe je als je zo'n situatie hebt?