[ https://issues.apache.org/jira/browse/LUCENE-939?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Busch updated LUCENE-939: --------------------------------- Attachment: lucene-939.patch This patch removes the catch clauses and adds explicit checks for the boundary cases. In fieldInfo(int fieldNumber) we only have to check if fieldNumber>=0 because of one special case: the very first term in the dictionary is always an empty term "":"". That's why -1 is stored as field number for this term in the dictionary. If we could avoid storing the empty term then we could also get rid of these checks in FieldInfos. When I have some time I'll look into that and add a separate issue. All tests pass with this patch. > Check for boundary conditions in FieldInfos > ------------------------------------------- > > Key: LUCENE-939 > URL: https://issues.apache.org/jira/browse/LUCENE-939 > Project: Lucene - Java > Issue Type: Improvement > Reporter: Michael Busch > Assignee: Michael Busch > Priority: Trivial > Fix For: 2.3 > > Attachments: lucene-939.patch > > > In FieldInfos there are three methods in which we don't check for > boundary conditions but catch e. g. an IndexOutOfBoundsException > or a NPE. I think this isn't good code style and is probably not > even faster than checking explicitly. > "Exceptions should not be used to alter the flow of a program as > part of normal execution." > Also this can be irritating when you're trying to debug an > IndexOutOfBoundsException that is thrown somewhere else in your > program and you place a breakpoint on that exception. > The three methods are: > public int fieldNumber(String fieldName) { > try { > FieldInfo fi = fieldInfo(fieldName); > if (fi != null) > return fi.number; > } > catch (IndexOutOfBoundsException ioobe) { > return -1; > } > return -1; > } > > public String fieldName(int fieldNumber) { > try { > return fieldInfo(fieldNumber).name; > } > catch (NullPointerException npe) { > return ""; > } > } > > > public FieldInfo fieldInfo(int fieldNumber) { > try { > return (FieldInfo) byNumber.get(fieldNumber); > } > catch (IndexOutOfBoundsException ioobe) { > return null; > } > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]