Index: lucene/spatial/src/java/org/apache/lucene/spatial/prefix/PrefixTreeStrategy.java
===================================================================
--- lucene/spatial/src/java/org/apache/lucene/spatial/prefix/PrefixTreeStrategy.java	(revision 1354855)
+++ lucene/spatial/src/java/org/apache/lucene/spatial/prefix/PrefixTreeStrategy.java	(working copy)
@@ -126,7 +126,7 @@
     CharSequence nextTokenStringNeedingLeaf = null;
 
     @Override
-    public boolean incrementToken() throws IOException {
+    public boolean incrementToken() {
       clearAttributes();
       if (nextTokenStringNeedingLeaf != null) {
         termAtt.append(nextTokenStringNeedingLeaf);
Index: lucene/sandbox/src/test/org/apache/lucene/sandbox/queries/TestSlowCollationMethods.java
===================================================================
--- lucene/sandbox/src/test/org/apache/lucene/sandbox/queries/TestSlowCollationMethods.java	(revision 1354855)
+++ lucene/sandbox/src/test/org/apache/lucene/sandbox/queries/TestSlowCollationMethods.java	(working copy)
@@ -90,7 +90,7 @@
   public void testSort() throws Exception {
     SortField sf = new SortField("field", new FieldComparatorSource() {
       @Override
-      public FieldComparator<String> newComparator(String fieldname, int numHits, int sortPos, boolean reversed) throws IOException {
+      public FieldComparator<String> newComparator(String fieldname, int numHits, int sortPos, boolean reversed) {
         return new SlowCollatedStringComparator(numHits, fieldname, collator);
       }
     });
Index: lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/regex/RegexTermsEnum.java
===================================================================
--- lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/regex/RegexTermsEnum.java	(revision 1354855)
+++ lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/regex/RegexTermsEnum.java	(working copy)
@@ -39,7 +39,7 @@
   private RegexCapabilities.RegexMatcher regexImpl;
   private final BytesRef prefixRef;
 
-  public RegexTermsEnum(TermsEnum tenum, Term term, RegexCapabilities regexCap) throws IOException {
+  public RegexTermsEnum(TermsEnum tenum, Term term, RegexCapabilities regexCap) {
     super(tenum);
     String text = term.text();
     this.regexImpl = regexCap.compile(text);
Index: lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeTermsEnum.java
===================================================================
--- lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeTermsEnum.java	(revision 1354855)
+++ lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeTermsEnum.java	(working copy)
@@ -67,7 +67,7 @@
    * @throws IOException
    */
   public SlowCollatedTermRangeTermsEnum(TermsEnum tenum, String lowerTermText, String upperTermText, 
-    boolean includeLower, boolean includeUpper, Collator collator) throws IOException {
+    boolean includeLower, boolean includeUpper, Collator collator) {
     super(tenum);
     this.collator = collator;
     this.upperTermText = upperTermText;
Index: lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
===================================================================
--- lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java	(revision 1354855)
+++ lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java	(working copy)
@@ -1458,7 +1458,7 @@
       }
 
       @Override
-      public boolean incrementToken() throws IOException {
+      public boolean incrementToken() {
         if(iter.hasNext()) {
           Token token = iter.next();
           clearAttributes();
@@ -1509,7 +1509,7 @@
       }
 
       @Override
-      public boolean incrementToken() throws IOException {
+      public boolean incrementToken() {
         if(iter.hasNext()) {
           Token token = iter.next();
           clearAttributes();
Index: lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java
===================================================================
--- lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java	(revision 1354855)
+++ lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java	(working copy)
@@ -52,8 +52,7 @@
 
 public class HighlighterPhraseTest extends LuceneTestCase {
   private static final String FIELD = "text";
-  public void testConcurrentPhrase() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InvalidTokenOffsetsException {
+  public void testConcurrentPhrase() throws IOException, InvalidTokenOffsetsException {
     final String TEXT = "the fox jumped";
     final Directory directory = newDirectory();
     final IndexWriter indexWriter = new IndexWriter(directory,
@@ -94,8 +93,7 @@
     }
   }
 
-  public void testConcurrentSpan() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InvalidTokenOffsetsException {
+  public void testConcurrentSpan() throws IOException, InvalidTokenOffsetsException {
     final String TEXT = "the fox jumped";
     final Directory directory = newDirectory();
     final IndexWriter indexWriter = new IndexWriter(directory,
@@ -129,19 +127,17 @@
         }
 
         @Override
-        public void collect(int i) throws IOException {
+        public void collect(int i) {
           bitset.set(this.baseDoc + i);
         }
 
         @Override
-        public void setNextReader(AtomicReaderContext context)
-            throws IOException {
+        public void setNextReader(AtomicReaderContext context) {
           this.baseDoc = context.docBase;
         }
 
         @Override
-        public void setScorer(org.apache.lucene.search.Scorer scorer)
-            throws IOException {
+        public void setScorer(org.apache.lucene.search.Scorer scorer) {
           // Do Nothing
         }
       });
@@ -165,8 +161,7 @@
     }
   }
 
-  public void testSparsePhrase() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InvalidTokenOffsetsException {
+  public void testSparsePhrase() throws IOException, InvalidTokenOffsetsException {
     final String TEXT = "the fox did not jump";
     final Directory directory = newDirectory();
     final IndexWriter indexWriter = new IndexWriter(directory,
@@ -208,8 +203,7 @@
     }
   }
 
-  public void testSparsePhraseWithNoPositions() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InvalidTokenOffsetsException {
+  public void testSparsePhraseWithNoPositions() throws IOException, InvalidTokenOffsetsException {
     final String TEXT = "the fox did not jump";
     final Directory directory = newDirectory();
     final IndexWriter indexWriter = new IndexWriter(directory,
@@ -248,8 +242,7 @@
     }
   }
 
-  public void testSparseSpan() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InvalidTokenOffsetsException {
+  public void testSparseSpan() throws IOException, InvalidTokenOffsetsException {
     final String TEXT = "the fox did not jump";
     final Directory directory = newDirectory();
     final IndexWriter indexWriter = new IndexWriter(directory,
@@ -304,7 +297,7 @@
     }
 
     @Override
-    public boolean incrementToken() throws IOException {
+    public boolean incrementToken() {
       this.i++;
       if (this.i >= this.tokens.length) {
         return false;
@@ -344,7 +337,7 @@
     }
 
     @Override
-    public boolean incrementToken() throws IOException {
+    public boolean incrementToken() {
       this.i++;
       if (this.i >= this.tokens.length) {
         return false;
Index: lucene/highlighter/src/test/org/apache/lucene/search/highlight/TokenSourcesTest.java
===================================================================
--- lucene/highlighter/src/test/org/apache/lucene/search/highlight/TokenSourcesTest.java	(revision 1354855)
+++ lucene/highlighter/src/test/org/apache/lucene/search/highlight/TokenSourcesTest.java	(working copy)
@@ -57,7 +57,7 @@
     private final PositionIncrementAttribute positionIncrementAttribute = addAttribute(PositionIncrementAttribute.class);
 
     @Override
-    public boolean incrementToken() throws IOException {
+    public boolean incrementToken() {
       this.i++;
       if (this.i >= this.tokens.length) {
         return false;
@@ -85,8 +85,7 @@
     }
   }
 
-  public void testOverlapWithOffset() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InvalidTokenOffsetsException {
+  public void testOverlapWithOffset() throws IOException, InvalidTokenOffsetsException {
     final String TEXT = "the fox did not jump";
     final Directory directory = newDirectory();
     final IndexWriter indexWriter = new IndexWriter(directory,
@@ -129,8 +128,8 @@
     }
   }
 
-  public void testOverlapWithPositionsAndOffset() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InvalidTokenOffsetsException {
+  public void testOverlapWithPositionsAndOffset()
+      throws IOException, InvalidTokenOffsetsException {
     final String TEXT = "the fox did not jump";
     final Directory directory = newDirectory();
     final IndexWriter indexWriter = new IndexWriter(directory,
@@ -174,8 +173,8 @@
     }
   }
 
-  public void testOverlapWithOffsetExactPhrase() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InvalidTokenOffsetsException {
+  public void testOverlapWithOffsetExactPhrase()
+      throws IOException, InvalidTokenOffsetsException {
     final String TEXT = "the fox did not jump";
     final Directory directory = newDirectory();
     final IndexWriter indexWriter = new IndexWriter(directory,
@@ -219,8 +218,7 @@
   }
 
   public void testOverlapWithPositionsAndOffsetExactPhrase()
-      throws CorruptIndexException, LockObtainFailedException, IOException,
-      InvalidTokenOffsetsException {
+      throws IOException, InvalidTokenOffsetsException {
     final String TEXT = "the fox did not jump";
     final Directory directory = newDirectory();
     final IndexWriter indexWriter = new IndexWriter(directory,
Index: lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/AbstractTestCase.java
===================================================================
--- lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/AbstractTestCase.java	(revision 1354855)
+++ lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/AbstractTestCase.java	(working copy)
@@ -323,7 +323,7 @@
     }
     
     @Override
-    public void reset() throws IOException {
+    public void reset() {
       startTerm = 0;
       nextStartOffset = 0;
       snippet = null;
Index: lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/IndexTimeSynonymTest.java
===================================================================
--- lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/IndexTimeSynonymTest.java	(revision 1354855)
+++ lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/IndexTimeSynonymTest.java	(working copy)
@@ -303,7 +303,7 @@
         int p = 0;
         
         @Override
-        public boolean incrementToken() throws IOException {
+        public boolean incrementToken() {
           if( p >= tokens.length ) return false;
           clearAttributes();
           tokens[p++].copyTo(reusableToken);
Index: lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java
===================================================================
--- lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java	(revision 1354855)
+++ lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java	(working copy)
@@ -348,7 +348,7 @@
       return map;
     }
 
-      void add( Query query, IndexReader reader ) throws IOException {
+      void add( Query query, IndexReader reader ) {
       if( query instanceof TermQuery ){
         addTerm( ((TermQuery)query).getTerm(), query.getBoost() );
       }
Index: lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/BaseFragmentsBuilder.java
===================================================================
--- lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/BaseFragmentsBuilder.java	(revision 1354855)
+++ lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/BaseFragmentsBuilder.java	(working copy)
@@ -125,14 +125,14 @@
     reader.document(docId, new StoredFieldVisitor() {
         
         @Override
-        public void stringField(FieldInfo fieldInfo, String value) throws IOException {
+        public void stringField(FieldInfo fieldInfo, String value) {
           FieldType ft = new FieldType(TextField.TYPE_STORED);
           ft.setStoreTermVectors(fieldInfo.hasVectors());
           fields.add(new Field(fieldInfo.name, value, ft));
         }
 
         @Override
-        public Status needsField(FieldInfo fieldInfo) throws IOException {
+        public Status needsField(FieldInfo fieldInfo) {
           return fieldInfo.name.equals(fieldName) ? Status.YES : Status.NO;
         }
       });
Index: lucene/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java
===================================================================
--- lucene/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java	(revision 1354855)
+++ lucene/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java	(working copy)
@@ -105,7 +105,7 @@
   };
   
   @Override
-  public boolean incrementToken() throws IOException {
+  public boolean incrementToken() {
     if (this.tokensAtCurrentPosition.hasNext()) {
       final Token next = this.tokensAtCurrentPosition.next();
       clearAttributes();
@@ -119,7 +119,7 @@
   }
 
   @Override
-  public void reset() throws IOException {
+  public void reset() {
     this.tokensAtCurrentPosition = this.positionedTokens.iterator();
   }
 }
Index: lucene/highlighter/src/java/org/apache/lucene/search/highlight/TokenSources.java
===================================================================
--- lucene/highlighter/src/java/org/apache/lucene/search/highlight/TokenSources.java	(revision 1354855)
+++ lucene/highlighter/src/java/org/apache/lucene/search/highlight/TokenSources.java	(working copy)
@@ -191,7 +191,7 @@
       }
 
       @Override
-      public boolean incrementToken() throws IOException {
+      public boolean incrementToken() {
         if (currentToken >= tokens.length) {
           return false;
         }
Index: lucene/join/src/java/org/apache/lucene/search/join/TermsQuery.java
===================================================================
--- lucene/join/src/java/org/apache/lucene/search/join/TermsQuery.java	(revision 1354855)
+++ lucene/join/src/java/org/apache/lucene/search/join/TermsQuery.java	(working copy)
@@ -74,7 +74,7 @@
     private BytesRef seekTerm;
     private int upto = 0;
 
-    SeekingTermSetTermsEnum(TermsEnum tenum, BytesRefHash terms) throws IOException {
+    SeekingTermSetTermsEnum(TermsEnum tenum, BytesRefHash terms) {
       super(tenum);
       this.terms = terms;
 
Index: lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java
===================================================================
--- lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java	(revision 1354855)
+++ lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java	(working copy)
@@ -299,7 +299,7 @@
             topScoreDocCollector.collect(doc);
           }
 
-          public void setNextReader(AtomicReaderContext context) throws IOException {
+          public void setNextReader(AtomicReaderContext context) {
             docBase = context.docBase;
             topScoreDocCollector.setNextReader(context);
           }
@@ -496,7 +496,7 @@
             reuse = null;
           }
 
-          public void setScorer(Scorer scorer) throws IOException {
+          public void setScorer(Scorer scorer) {
             this.scorer = scorer;
           }
 
@@ -528,7 +528,7 @@
             terms = FieldCache.DEFAULT.getTerms(context.reader(), fromField);
           }
 
-          public void setScorer(Scorer scorer) throws IOException {
+          public void setScorer(Scorer scorer) {
             this.scorer = scorer;
           }
 
@@ -587,7 +587,7 @@
           }
 
           public boolean acceptsDocsOutOfOrder() {return false;}
-          public void setScorer(Scorer scorer) throws IOException {}
+          public void setScorer(Scorer scorer) {}
         });
       } else {
         toSearcher.search(new MatchAllDocsQuery(), new Collector() {
@@ -596,7 +596,7 @@
           private int docBase;
           private final BytesRef spare = new BytesRef();
 
-          public void collect(int doc) throws IOException {
+          public void collect(int doc) {
             JoinScore joinScore = joinValueToJoinScores.get(terms.getTerm(doc, spare));
             if (joinScore == null) {
               return;
@@ -610,7 +610,7 @@
           }
 
           public boolean acceptsDocsOutOfOrder() {return false;}
-          public void setScorer(Scorer scorer) throws IOException {}
+          public void setScorer(Scorer scorer) {}
         });
       }
       queryVals.put(uniqueRandomValue, docToJoinScore);
@@ -625,7 +625,7 @@
   private TopDocs createExpectedTopDocs(String queryValue,
                                         final boolean from,
                                         final ScoreMode scoreMode,
-                                        IndexIterationContext context) throws IOException {
+                                        IndexIterationContext context) {
 
     Map<Integer, JoinScore> hitsToJoinScores;
     if (from) {
Index: lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
===================================================================
--- lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java	(revision 1354855)
+++ lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java	(working copy)
@@ -443,7 +443,7 @@
         }
 
         @Override
-        public void setScorer(Scorer scorer) throws IOException {
+        public void setScorer(Scorer scorer) {
           this.scorer = scorer;
         }
 
@@ -770,13 +770,13 @@
             }
 
             @Override
-            public long getSumDocFreq() throws IOException {
+            public long getSumDocFreq() {
               // each term has df=1
               return info.sortedTerms.length;
             }
 
             @Override
-            public int getDocCount() throws IOException {
+            public int getDocCount() {
               return info.sortedTerms.length > 0 ? 1 : 0;
             }
               
@@ -1065,7 +1065,7 @@
     }
 
     @Override
-    public DocValues docValues(String field) throws IOException {
+    public DocValues docValues(String field) {
       return null;
     }
     
@@ -1075,7 +1075,7 @@
     private Similarity cachedSimilarity;
     
     @Override
-    public DocValues normValues(String field) throws IOException {
+    public DocValues normValues(String field) {
       DocValues norms = cachedNormValues;
       Similarity sim = getSimilarity();
       if (!field.equals(cachedFieldName) || sim != cachedSimilarity) { // not cached?
Index: lucene/test-framework/src/java/org/apache/lucene/index/FieldFilterAtomicReader.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/index/FieldFilterAtomicReader.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/index/FieldFilterAtomicReader.java	(working copy)
@@ -63,7 +63,7 @@
   }
 
   @Override
-  public void document(final int docID, final StoredFieldVisitor visitor) throws CorruptIndexException, IOException {
+  public void document(final int docID, final StoredFieldVisitor visitor) throws IOException {
     super.document(docID, new StoredFieldVisitor() {
       @Override
       public void binaryField(FieldInfo fieldInfo, byte[] value, int offset, int length) throws IOException {
Index: lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java	(working copy)
@@ -117,8 +117,7 @@
                                          final long stopTime,
                                          final Set<String> delIDs,
                                          final Set<String> delPackIDs,
-                                         final List<SubDocs> allSubDocs)
-    throws Exception {
+                                         final List<SubDocs> allSubDocs) {
     final Thread[] threads = new Thread[numThreads];
     for(int thread=0;thread<numThreads;thread++) {
       threads[thread] = new Thread() {
Index: lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java	(working copy)
@@ -60,7 +60,7 @@
   @Override
   public MergeSpecification findForcedMerges(
        SegmentInfos segmentInfos, int maxSegmentCount, Map<SegmentInfoPerCommit,Boolean> segmentsToMerge)
-    throws CorruptIndexException, IOException {
+    throws IOException {
 
     final List<SegmentInfoPerCommit> eligibleSegments = new ArrayList<SegmentInfoPerCommit>();
     for(SegmentInfoPerCommit info : segmentInfos) {
@@ -96,9 +96,7 @@
   }
 
   @Override
-  public MergeSpecification findForcedDeletesMerges(
-      SegmentInfos segmentInfos)
-    throws CorruptIndexException, IOException {
+  public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos) throws IOException {
     return findMerges(segmentInfos);
   }
 
Index: lucene/test-framework/src/java/org/apache/lucene/index/RandomIndexWriter.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/index/RandomIndexWriter.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/index/RandomIndexWriter.java	(working copy)
@@ -326,28 +326,28 @@
     maybeCommit();
   }
   
-  public void addIndexes(Directory... dirs) throws CorruptIndexException, IOException {
+  public void addIndexes(Directory... dirs) throws IOException {
     w.addIndexes(dirs);
   }
 
-  public void addIndexes(IndexReader... readers) throws CorruptIndexException, IOException {
+  public void addIndexes(IndexReader... readers) throws IOException {
     w.addIndexes(readers);
   }
   
-  public void deleteDocuments(Term term) throws CorruptIndexException, IOException {
+  public void deleteDocuments(Term term) throws IOException {
     w.deleteDocuments(term);
   }
 
-  public void deleteDocuments(Query q) throws CorruptIndexException, IOException {
+  public void deleteDocuments(Query q) throws IOException {
     w.deleteDocuments(q);
   }
   
-  public void commit() throws CorruptIndexException, IOException {
+  public void commit() throws IOException {
     w.commit();
     switchDoDocValues();
   }
   
-  public int numDocs() throws IOException {
+  public int numDocs() {
     return w.numDocs();
   }
 
Index: lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java	(working copy)
@@ -282,7 +282,7 @@
     }
   }
 
-  public synchronized void clearCrash() throws IOException {
+  public synchronized void clearCrash() {
     crashed = false;
     openLocks.clear();
   }
@@ -617,7 +617,7 @@
    *  checkIndex() or not. It might mask real problems, where we silently
    *  don't checkindex at all. instead we look for a segments file.
    */
-  private boolean indexPossiblyExists(Directory d) throws IOException {
+  private boolean indexPossiblyExists(Directory d) {
     String files[];
     try {
       files = d.listAll();
Index: lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java	(working copy)
@@ -755,7 +755,7 @@
    * some features of Windows, such as not allowing open files to be
    * overwritten.
    */
-  public static MockDirectoryWrapper newDirectory() throws IOException {
+  public static MockDirectoryWrapper newDirectory() {
     return newDirectory(random());
   }
 
@@ -763,7 +763,7 @@
    * Returns a new Directory instance, using the specified random.
    * See {@link #newDirectory()} for more information.
    */
-  public static MockDirectoryWrapper newDirectory(Random r) throws IOException {
+  public static MockDirectoryWrapper newDirectory(Random r) {
     Directory impl = newDirectoryImpl(r, TEST_DIRECTORY);
     MockDirectoryWrapper dir = new MockDirectoryWrapper(r, maybeNRTWrap(r, impl));
     closeAfterSuite(new CloseableDirectory(dir, suiteFailureMarker));
@@ -785,12 +785,12 @@
   }
 
   /** Returns a new FSDirectory instance over the given file, which must be a folder. */
-  public static MockDirectoryWrapper newFSDirectory(File f) throws IOException {
+  public static MockDirectoryWrapper newFSDirectory(File f) {
     return newFSDirectory(f, null);
   }
 
   /** Returns a new FSDirectory instance over the given file, which must be a folder. */
-  public static MockDirectoryWrapper newFSDirectory(File f, LockFactory lf) throws IOException {
+  public static MockDirectoryWrapper newFSDirectory(File f, LockFactory lf) {
     String fsdirClass = TEST_DIRECTORY;
     if (fsdirClass.equals("random")) {
       fsdirClass = RandomPicks.randomFrom(random(), FS_DIRECTORIES); 
Index: lucene/test-framework/src/java/org/apache/lucene/util/CloseableDirectory.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/util/CloseableDirectory.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/util/CloseableDirectory.java	(working copy)
@@ -39,7 +39,7 @@
   }
   
   @Override
-  public void close() throws IOException {
+  public void close() {
     // We only attempt to check open/closed state if there were no other test
     // failures.
     try {
Index: lucene/test-framework/src/java/org/apache/lucene/codecs/mockintblock/MockFixedIntBlockPostingsFormat.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/codecs/mockintblock/MockFixedIntBlockPostingsFormat.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/codecs/mockintblock/MockFixedIntBlockPostingsFormat.java	(working copy)
@@ -84,7 +84,7 @@
       return new FixedIntBlockIndexInput(dir.openInput(fileName, context)) {
 
         @Override
-        protected BlockReader getBlockReader(final IndexInput in, final int[] buffer) throws IOException {
+        protected BlockReader getBlockReader(final IndexInput in, final int[] buffer) {
           return new BlockReader() {
             public void seek(long pos) {}
             public void readBlock() throws IOException {
Index: lucene/test-framework/src/java/org/apache/lucene/codecs/mockintblock/MockVariableIntBlockPostingsFormat.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/codecs/mockintblock/MockVariableIntBlockPostingsFormat.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/codecs/mockintblock/MockVariableIntBlockPostingsFormat.java	(working copy)
@@ -85,7 +85,7 @@
       return new VariableIntBlockIndexInput(in) {
 
         @Override
-        protected BlockReader getBlockReader(final IndexInput in, final int[] buffer) throws IOException {
+        protected BlockReader getBlockReader(final IndexInput in, final int[] buffer) {
           return new BlockReader() {
             public void seek(long pos) {}
             public int readBlock() throws IOException {
Index: lucene/test-framework/src/java/org/apache/lucene/analysis/CannedTokenStream.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/analysis/CannedTokenStream.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/analysis/CannedTokenStream.java	(working copy)
@@ -42,7 +42,7 @@
   }
   
   @Override
-  public boolean incrementToken() throws IOException {
+  public boolean incrementToken() {
     if (upto < tokens.length) {
       final Token token = tokens[upto++];     
       // TODO: can we just capture/restoreState so
Index: lucene/test-framework/src/java/org/apache/lucene/analysis/EmptyTokenizer.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/analysis/EmptyTokenizer.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/analysis/EmptyTokenizer.java	(working copy)
@@ -30,7 +30,7 @@
   }
 
   @Override
-  public boolean incrementToken() throws IOException {
+  public boolean incrementToken() {
     return false;
   }
 }
Index: lucene/test-framework/src/java/org/apache/lucene/search/AssertingIndexSearcher.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/search/AssertingIndexSearcher.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/search/AssertingIndexSearcher.java	(working copy)
@@ -91,7 +91,7 @@
       }
 
       @Override
-      public float getValueForNormalization() throws IOException {
+      public float getValueForNormalization() {
         throw new IllegalStateException("Weight already normalized.");
       }
 
Index: lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java	(working copy)
@@ -185,8 +185,7 @@
   }
 
   /** Tests that a Hits has an expected order of documents */
-  public static void checkDocIds(String mes, int[] results, ScoreDoc[] hits)
-  throws IOException {
+  public static void checkDocIds(String mes, int[] results, ScoreDoc[] hits) {
     Assert.assertEquals(mes + " nr of hits", hits.length, results.length);
     for (int i = 0; i < results.length; i++) {
       Assert.assertEquals(mes + " doc nrs for hit " + i, results[i], hits[i].doc);
@@ -200,15 +199,14 @@
         Query query,
         ScoreDoc[] hits1,
         ScoreDoc[] hits2,
-        int[] results)
-          throws IOException {
+        int[] results) {
 
     checkDocIds("hits1", results, hits1);
     checkDocIds("hits2", results, hits2);
     checkEqual(query, hits1, hits2);
   }
 
-  public static void checkEqual(Query query, ScoreDoc[] hits1, ScoreDoc[] hits2) throws IOException {
+  public static void checkEqual(Query query, ScoreDoc[] hits1, ScoreDoc[] hits2) {
      final float scoreTolerance = 1.0e-6f;
      if (hits1.length != hits2.length) {
        Assert.fail("Unequal lengths: hits1="+hits1.length+",hits2="+hits2.length);
@@ -231,7 +229,7 @@
     }
   }
 
-  public static String hits2str(ScoreDoc[] hits1, ScoreDoc[] hits2, int start, int end) throws IOException {
+  public static String hits2str(ScoreDoc[] hits1, ScoreDoc[] hits2, int start, int end) {
     StringBuilder sb = new StringBuilder();
     int len1=hits1==null ? 0 : hits1.length;
     int len2=hits2==null ? 0 : hits2.length;
@@ -422,7 +420,7 @@
    * @see ExplanationAsserter
    */
   public static class ExplanationAssertingSearcher extends IndexSearcher {
-    public ExplanationAssertingSearcher(IndexReader r) throws IOException {
+    public ExplanationAssertingSearcher(IndexReader r) {
       super(r);
     }
     protected void checkExplanations(Query q) throws IOException {
Index: lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java
===================================================================
--- lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java	(revision 1354855)
+++ lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java	(working copy)
@@ -141,7 +141,7 @@
   public static class FCInvisibleMultiReader extends MultiReader {
     private final Object cacheKey = new Object();
   
-    public FCInvisibleMultiReader(IndexReader... readers) throws IOException {
+    public FCInvisibleMultiReader(IndexReader... readers) {
       super(readers);
     }
     
@@ -268,7 +268,7 @@
           private int leafPtr;
 
           @Override
-          public void setScorer(Scorer scorer) throws IOException {
+          public void setScorer(Scorer scorer) {
             this.sc = scorer;
           }
 
@@ -375,7 +375,7 @@
       private int leafPtr;
       private Bits liveDocs;
       @Override
-      public void setScorer(Scorer scorer) throws IOException {
+      public void setScorer(Scorer scorer) {
         this.scorer = scorer;
       }
       @Override
Index: lucene/queries/src/test/org/apache/lucene/queries/function/TestOrdValues.java
===================================================================
--- lucene/queries/src/test/org/apache/lucene/queries/function/TestOrdValues.java	(revision 1354855)
+++ lucene/queries/src/test/org/apache/lucene/queries/function/TestOrdValues.java	(working copy)
@@ -48,7 +48,7 @@
    * Test OrdFieldSource
    */
   @Test
-  public void testOrdFieldRank() throws CorruptIndexException, Exception {
+  public void testOrdFieldRank() throws Exception {
     doTestRank(ID_FIELD, true);
   }
 
@@ -56,12 +56,12 @@
    * Test ReverseOrdFieldSource
    */
   @Test
-  public void testReverseOrdFieldRank() throws CorruptIndexException, Exception {
+  public void testReverseOrdFieldRank() throws Exception {
     doTestRank(ID_FIELD, false);
   }
 
   // Test that queries based on reverse/ordFieldScore scores correctly
-  private void doTestRank(String field, boolean inOrder) throws CorruptIndexException, Exception {
+  private void doTestRank(String field, boolean inOrder) throws Exception {
     IndexReader r = DirectoryReader.open(dir);
     IndexSearcher s = new IndexSearcher(r);
     ValueSource vs;
@@ -98,7 +98,7 @@
    * Test exact score for OrdFieldSource
    */
   @Test
-  public void testOrdFieldExactScore() throws CorruptIndexException, Exception {
+  public void testOrdFieldExactScore() throws Exception {
     doTestExactScore(ID_FIELD, true);
   }
 
@@ -106,13 +106,13 @@
    * Test exact score for ReverseOrdFieldSource
    */
   @Test
-  public void testReverseOrdFieldExactScore() throws CorruptIndexException, Exception {
+  public void testReverseOrdFieldExactScore() throws Exception {
     doTestExactScore(ID_FIELD, false);
   }
 
 
   // Test that queries based on reverse/ordFieldScore returns docs with expected score.
-  private void doTestExactScore(String field, boolean inOrder) throws CorruptIndexException, Exception {
+  private void doTestExactScore(String field, boolean inOrder) throws Exception {
     IndexReader r = DirectoryReader.open(dir);
     IndexSearcher s = new IndexSearcher(r);
     ValueSource vs;
Index: lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java
===================================================================
--- lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java	(revision 1354855)
+++ lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java	(working copy)
@@ -178,7 +178,7 @@
       final int[] values = FieldCache.DEFAULT.getInts(context.reader(), INT_FIELD, false);
       return new CustomScoreProvider(context) {
         @Override
-        public float customScore(int doc, float subScore, float valSrcScore) throws IOException {
+        public float customScore(int doc, float subScore, float valSrcScore) {
           assertTrue(doc <= context.reader().maxDoc());
           return values[doc];
         }
Index: lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java
===================================================================
--- lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java	(revision 1354855)
+++ lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java	(working copy)
@@ -290,7 +290,7 @@
 
     // constructor
     private CustomScorer(CustomScoreProvider provider, CustomWeight w, float qWeight,
-        Scorer subQueryScorer, Scorer[] valSrcScorers) throws IOException {
+        Scorer subQueryScorer, Scorer[] valSrcScorers) {
       super(w);
       this.qWeight = qWeight;
       this.subQueryScorer = subQueryScorer;
Index: lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TermFreqValueSource.java
===================================================================
--- lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TermFreqValueSource.java	(revision 1354855)
+++ lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TermFreqValueSource.java	(working copy)
@@ -80,12 +80,12 @@
             }
 
             @Override
-            public int nextDoc() throws IOException {
+            public int nextDoc() {
               return DocIdSetIterator.NO_MORE_DOCS;
             }
 
             @Override
-            public int advance(int target) throws IOException {
+            public int advance(int target) {
               return DocIdSetIterator.NO_MORE_DOCS;
             }
           };
Index: lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java
===================================================================
--- lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java	(revision 1354855)
+++ lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java	(working copy)
@@ -87,12 +87,12 @@
             }
 
             @Override
-            public int nextDoc() throws IOException {
+            public int nextDoc() {
               return DocIdSetIterator.NO_MORE_DOCS;
             }
 
             @Override
-            public int advance(int target) throws IOException {
+            public int advance(int target) {
               return DocIdSetIterator.NO_MORE_DOCS;
             }
           };
Index: lucene/suggest/src/test/org/apache/lucene/search/spell/TestSpellChecker.java
===================================================================
--- lucene/suggest/src/test/org/apache/lucene/search/spell/TestSpellChecker.java	(revision 1354855)
+++ lucene/suggest/src/test/org/apache/lucene/search/spell/TestSpellChecker.java	(working copy)
@@ -103,7 +103,7 @@
   }
 
 
-  public void testBuild() throws CorruptIndexException, IOException {
+  public void testBuild() throws IOException {
     IndexReader r = DirectoryReader.open(userindex);
 
     spellChecker.clearIndex();
Index: lucene/suggest/src/test/org/apache/lucene/search/suggest/TermFreqArrayIterator.java
===================================================================
--- lucene/suggest/src/test/org/apache/lucene/search/suggest/TermFreqArrayIterator.java	(revision 1354855)
+++ lucene/suggest/src/test/org/apache/lucene/search/suggest/TermFreqArrayIterator.java	(working copy)
@@ -50,7 +50,7 @@
   }
 
   @Override
-  public BytesRef next() throws IOException {
+  public BytesRef next() {
     if (i.hasNext()) {
       current = i.next();
       spare.copyBytes(current.term);
Index: lucene/suggest/src/java/org/apache/lucene/search/suggest/BytesRefList.java
===================================================================
--- lucene/suggest/src/java/org/apache/lucene/search/suggest/BytesRefList.java	(revision 1354855)
+++ lucene/suggest/src/java/org/apache/lucene/search/suggest/BytesRefList.java	(working copy)
@@ -190,7 +190,7 @@
       int pos = 0;
       
       @Override
-      public BytesRef next() throws IOException {
+      public BytesRef next() {
         if (pos < size) {
           return get(spare, ords == null ? pos++ : ords[pos++]);
         }
Index: lucene/facet/src/test/org/apache/lucene/util/encoding/EncodingTest.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/util/encoding/EncodingTest.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/util/encoding/EncodingTest.java	(working copy)
@@ -142,7 +142,7 @@
   }
 
   private static void decoding(ByteArrayOutputStream baos, IntDecoder decoder)
-      throws IOException, InstantiationException, IllegalAccessException {
+      throws IOException {
     ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
     decoder.reInit(bais);
     
Index: lucene/facet/src/test/org/apache/lucene/facet/FacetTestUtils.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/FacetTestUtils.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/FacetTestUtils.java	(working copy)
@@ -53,7 +53,7 @@
 
 public class FacetTestUtils {
 
-  public static Directory[][] createIndexTaxonomyDirs(int number) throws IOException {
+  public static Directory[][] createIndexTaxonomyDirs(int number) {
     Directory[][] dirs = new Directory[number][2];
     for (int i = 0; i < number; i++) {
       dirs[i][0] = LuceneTestCase.newDirectory();
@@ -93,8 +93,7 @@
 
   public static Collector[] search(IndexSearcher searcher,
       TaxonomyReader taxonomyReader, DefaultFacetIndexingParams iParams,
-      int k, String... facetNames) throws IOException,
-      IllegalAccessException, InstantiationException {
+      int k, String... facetNames) throws IOException {
     
     Collector[] collectors = new Collector[2];
     
@@ -121,8 +120,7 @@
   }
   
   public static void add(FacetIndexingParams iParams, RandomIndexWriter iw,
-      TaxonomyWriter tw, String... strings) throws IOException,
-      CorruptIndexException {
+      TaxonomyWriter tw, String... strings) throws IOException {
     ArrayList<CategoryPath> cps = new ArrayList<CategoryPath>();
     CategoryPath cp = new CategoryPath(strings);
     cps.add(cp);
Index: lucene/facet/src/test/org/apache/lucene/facet/search/BaseTestTopK.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/search/BaseTestTopK.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/search/BaseTestTopK.java	(working copy)
@@ -51,7 +51,7 @@
 
   @Override
   protected void populateIndex(RandomIndexWriter iw, TaxonomyWriter taxo,
-      FacetIndexingParams iParams) throws IOException, CorruptIndexException {
+      FacetIndexingParams iParams) throws IOException {
     currDoc = -1;
     super.populateIndex(iw, taxo, iParams);
   }
Index: lucene/facet/src/test/org/apache/lucene/facet/search/TestMultipleCategoryLists.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/search/TestMultipleCategoryLists.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/search/TestMultipleCategoryLists.java	(working copy)
@@ -271,12 +271,12 @@
     IOUtils.close(dirs[0]);
   }
 
-  private Directory[][] getDirs() throws IOException {
+  private Directory[][] getDirs() {
     return FacetTestUtils.createIndexTaxonomyDirs(1);
   }
 
   private void assertCorrectResults(FacetsCollector facetsCollector)
-  throws IOException, IllegalAccessException, InstantiationException {
+  throws IOException {
     List<FacetResult> res = facetsCollector.getFacetResults();
 
     FacetResult results = res.get(0);
@@ -354,7 +354,7 @@
   }
 
   private void seedIndex(RandomIndexWriter iw, TaxonomyWriter tw,
-                          FacetIndexingParams iParams) throws IOException, CorruptIndexException {
+                          FacetIndexingParams iParams) throws IOException {
     FacetTestUtils.add(iParams, iw, tw, "Author", "Mark Twain");
     FacetTestUtils.add(iParams, iw, tw, "Author", "Stephen King");
     FacetTestUtils.add(iParams, iw, tw, "Author", "Kurt Vonnegut");
Index: lucene/facet/src/test/org/apache/lucene/facet/search/CategoryListIteratorTest.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/search/CategoryListIteratorTest.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/search/CategoryListIteratorTest.java	(working copy)
@@ -57,7 +57,7 @@
     private boolean exhausted = false;
     private CharTermAttribute term = addAttribute(CharTermAttribute.class);
 
-    public DataTokenStream(String text, IntEncoder encoder) throws IOException {
+    public DataTokenStream(String text, IntEncoder encoder) {
       this.encoder = encoder;
       term.setEmpty().append(text);
     }
Index: lucene/facet/src/test/org/apache/lucene/facet/search/TestTopKInEachNodeResultHandler.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/search/TestTopKInEachNodeResultHandler.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/search/TestTopKInEachNodeResultHandler.java	(working copy)
@@ -321,8 +321,7 @@
   }
 
   private void prvt_add(DefaultFacetIndexingParams iParams, RandomIndexWriter iw,
-                    TaxonomyWriter tw, String... strings) throws IOException,
-      CorruptIndexException {
+                    TaxonomyWriter tw, String... strings) throws IOException {
     ArrayList<CategoryPath> cps = new ArrayList<CategoryPath>();
     CategoryPath cp = new CategoryPath(strings);
     cps.add(cp);
Index: lucene/facet/src/test/org/apache/lucene/facet/search/sampling/BaseSampleTestTopK.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/search/sampling/BaseSampleTestTopK.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/search/sampling/BaseSampleTestTopK.java	(working copy)
@@ -53,7 +53,7 @@
    * Lots of randomly generated data is being indexed, and later on a "90% docs" faceted search
    * is performed. The results are compared to non-sampled ones.
    */
-  public void testCountUsingSamping() throws Exception, IOException {
+  public void testCountUsingSamping() throws Exception {
     boolean useRandomSampler = random().nextBoolean();
     for (int partitionSize : partitionSizes) {
       try {
Index: lucene/facet/src/test/org/apache/lucene/facet/search/TestCategoryListCache.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/search/TestCategoryListCache.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/search/TestCategoryListCache.java	(working copy)
@@ -72,7 +72,7 @@
     doTest(true,true);
   }
   
-  private void doTest(boolean withCache, boolean plantWrongData) throws IOException, Exception {
+  private void doTest(boolean withCache, boolean plantWrongData) throws Exception {
     Map<CategoryPath,Integer> truth = facetCountsTruth();
     CategoryPath cp = (CategoryPath) truth.keySet().toArray()[0]; // any category path will do for this test 
     CountFacetRequest frq = new CountFacetRequest(cp, 10);
Index: lucene/facet/src/test/org/apache/lucene/facet/search/DrillDownTest.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/search/DrillDownTest.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/search/DrillDownTest.java	(working copy)
@@ -58,7 +58,7 @@
   private static Directory dir;
   private static Directory taxoDir;
   
-  public DrillDownTest() throws IOException {
+  public DrillDownTest() {
     PerDimensionIndexingParams iParams = new PerDimensionIndexingParams();
     CategoryListParams aClParams = new CategoryListParams(new Term("testing_facets_a", "a"));
     CategoryListParams bClParams = new CategoryListParams(new Term("testing_facets_b", "b"));
@@ -70,7 +70,7 @@
   }
 
   @BeforeClass
-  public static void createIndexes() throws CorruptIndexException, LockObtainFailedException, IOException {
+  public static void createIndexes() throws IOException {
     dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir, 
         newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random(), MockTokenizer.KEYWORD, false)));
Index: lucene/facet/src/test/org/apache/lucene/facet/search/TestTopKResultsHandlerRandom.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/search/TestTopKResultsHandlerRandom.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/search/TestTopKResultsHandlerRandom.java	(working copy)
@@ -34,7 +34,7 @@
 public class TestTopKResultsHandlerRandom extends BaseTestTopK {
   
   private List<FacetResult> countFacets(int partitionSize, int numResults, final boolean doComplement)
-      throws IOException, IllegalAccessException, InstantiationException {
+      throws IOException {
     Query q = new MatchAllDocsQuery();
     FacetSearchParams facetSearchParams = searchParamsWithRequests(numResults, partitionSize);
     FacetsCollector fc = new FacetsCollector(facetSearchParams, indexReader, taxoReader) {
Index: lucene/facet/src/test/org/apache/lucene/facet/search/params/MultiIteratorsPerCLParamsTest.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/search/params/MultiIteratorsPerCLParamsTest.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/search/params/MultiIteratorsPerCLParamsTest.java	(working copy)
@@ -84,8 +84,7 @@
     doTestCLParamMultiIteratorsByRequest(true);
   }
 
-  private void doTestCLParamMultiIteratorsByRequest(boolean cacheCLI) throws Exception,
-      CorruptIndexException, IOException {
+  private void doTestCLParamMultiIteratorsByRequest(boolean cacheCLI) throws Exception {
     // Create a CLP which generates different CLIs according to the
     // FacetRequest's dimension
     CategoryListParams clp = new CategoryListParams();
Index: lucene/facet/src/test/org/apache/lucene/facet/search/TestTotalFacetCountsCache.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/search/TestTotalFacetCountsCache.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/search/TestTotalFacetCountsCache.java	(working copy)
@@ -140,8 +140,7 @@
   }
 
   private void doTestGeneralSynchronization(int numThreads, int sleepMillis,
-      int cacheSize) throws Exception, CorruptIndexException, IOException,
-      InterruptedException {
+      int cacheSize) throws Exception {
     TFC.setCacheSize(cacheSize);
     SlowRAMDirectory slowIndexDir = new SlowRAMDirectory(-1, random());
     MockDirectoryWrapper indexDir = new MockDirectoryWrapper(random(), slowIndexDir);
Index: lucene/facet/src/test/org/apache/lucene/facet/index/streaming/CategoryParentsStreamTest.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/index/streaming/CategoryParentsStreamTest.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/index/streaming/CategoryParentsStreamTest.java	(working copy)
@@ -116,7 +116,7 @@
    * @throws FacetException 
    */
   @Test
-  public void testNoRetainableAttributes() throws IOException, FacetException {
+  public void testNoRetainableAttributes() throws IOException {
     Directory directory = newDirectory();
     TaxonomyWriter taxonomyWriter = new DirectoryTaxonomyWriter(directory);
 
@@ -150,7 +150,7 @@
    * @throws FacetException 
    */
   @Test
-  public void testRetainableAttributes() throws IOException, FacetException {
+  public void testRetainableAttributes() throws IOException {
     Directory directory = newDirectory();
     TaxonomyWriter taxonomyWriter = new DirectoryTaxonomyWriter(
         directory);
Index: lucene/facet/src/test/org/apache/lucene/facet/example/TestMultiCLExample.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/example/TestMultiCLExample.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/example/TestMultiCLExample.java	(working copy)
@@ -40,8 +40,7 @@
     assertCorrectMultiResults(res);
   }
 
-  public static void assertCorrectMultiResults(ExampleResult exampleResults)
-      throws Exception {
+  public static void assertCorrectMultiResults(ExampleResult exampleResults) {
     List<FacetResult> results = exampleResults.getFacetResults();
     FacetResult result = results.get(0);
     assertNotNull("Result should not be null", result);
Index: lucene/facet/src/test/org/apache/lucene/facet/FacetTestBase.java
===================================================================
--- lucene/facet/src/test/org/apache/lucene/facet/FacetTestBase.java	(revision 1354855)
+++ lucene/facet/src/test/org/apache/lucene/facet/FacetTestBase.java	(working copy)
@@ -92,7 +92,7 @@
   protected IndexSearcher searcher;
   
   @BeforeClass
-  public static void beforeClassFacetTestBase() throws Exception {
+  public static void beforeClassFacetTestBase() {
     TEST_DIR = _TestUtil.getTempDir("facets");
     dirsPerPartitionSize = new HashMap<Integer, FacetTestBase.SearchTaxoDirPair>(); 
   }
@@ -215,7 +215,7 @@
    * <p>Subclasses can override this to test different scenarios
    */
   protected void populateIndex(RandomIndexWriter iw, TaxonomyWriter taxo, FacetIndexingParams iParams)
-      throws IOException, CorruptIndexException {
+      throws IOException {
     // add test documents 
     int numDocsToIndex = numDocsToIndex();
     for (int doc=0; doc<numDocsToIndex; doc++) {
@@ -257,8 +257,7 @@
   
   /** utility Create a dummy document with specified categories and content */
   protected final void indexDoc(FacetIndexingParams iParams, RandomIndexWriter iw,
-      TaxonomyWriter tw, String content, List<CategoryPath> categories) throws IOException,
-      CorruptIndexException {
+      TaxonomyWriter tw, String content, List<CategoryPath> categories) throws IOException {
     Document d = new Document();
     CategoryDocumentBuilder builder = new CategoryDocumentBuilder(tw, iParams);
     builder.setCategoryPaths(categories);
Index: lucene/facet/src/java/org/apache/lucene/facet/util/ScoredDocIdsUtils.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/util/ScoredDocIdsUtils.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/util/ScoredDocIdsUtils.java	(working copy)
@@ -125,13 +125,13 @@
           public boolean isCacheable() { return true; }
 
           @Override
-          public DocIdSetIterator iterator() throws IOException {
+          public DocIdSetIterator iterator() {
             return new DocIdSetIterator() {
 
               private int next = -1;
 
               @Override
-              public int advance(int target) throws IOException {
+              public int advance(int target) {
                 while (next < size && docids[next++] < target) {
                 }
                 return next == size ? NO_MORE_DOCS : docids[next];
@@ -143,7 +143,7 @@
               }
 
               @Override
-              public int nextDoc() throws IOException {
+              public int nextDoc() {
                 if (++next >= size) {
                   return NO_MORE_DOCS;
                 }
@@ -155,7 +155,7 @@
         };
       }
 
-      public ScoredDocIDsIterator iterator() throws IOException {
+      public ScoredDocIDsIterator iterator() {
         return new ScoredDocIDsIterator() {
 
           int next = -1;
@@ -251,12 +251,12 @@
         }
 
         @Override
-        public DocIdSetIterator iterator() throws IOException {
+        public DocIdSetIterator iterator() {
           return new DocIdSetIterator() {
             private int next = -1;
 
             @Override
-            public int advance(int target) throws IOException {
+            public int advance(int target) {
               if (target <= next) {
                 target = next + 1;
               }
@@ -270,7 +270,7 @@
             }
 
             @Override
-            public int nextDoc() throws IOException {
+            public int nextDoc() {
               return ++next < maxDoc ? next : NO_MORE_DOCS;
             }
 
@@ -337,13 +337,13 @@
         }
 
         @Override
-        public DocIdSetIterator iterator() throws IOException {
+        public DocIdSetIterator iterator() {
           return new DocIdSetIterator() {
             final Bits liveDocs = MultiFields.getLiveDocs(reader);
             private int next = -1;
 
             @Override
-            public int advance(int target) throws IOException {
+            public int advance(int target) {
               if (target > next) {
                 next = target - 1;
               }
@@ -356,7 +356,7 @@
             }
 
             @Override
-            public int nextDoc() throws IOException {
+            public int nextDoc() {
               do {
                 ++next;
               } while (next < maxDoc && liveDocs != null && !liveDocs.get(next));
Index: lucene/facet/src/java/org/apache/lucene/facet/taxonomy/CategoryPath.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/taxonomy/CategoryPath.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/taxonomy/CategoryPath.java	(working copy)
@@ -1013,7 +1013,7 @@
     osw.flush();
   }
   
-  private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
+  private void readObject(java.io.ObjectInputStream in) throws IOException {
     InputStreamReader isr = new InputStreamReader(in, "UTF-8");
     this.deserializeFromStreamReader(isr);
   }
Index: lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyReader.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyReader.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyReader.java	(working copy)
@@ -127,7 +127,7 @@
     parentArray.refresh(indexReader);
   }
 
-  protected DirectoryReader openIndexReader(Directory directory) throws CorruptIndexException, IOException {
+  protected DirectoryReader openIndexReader(Directory directory) throws IOException {
     return DirectoryReader.open(directory);
   }
 
@@ -218,7 +218,7 @@
     return ret;
   }
 
-  public CategoryPath getPath(int ordinal) throws CorruptIndexException, IOException {
+  public CategoryPath getPath(int ordinal) throws IOException {
     ensureOpen();
     // TODO (Facet): Currently, the LRU cache we use (getCategoryCache) holds
     // strings with delimiters, not CategoryPath objects, so even if
@@ -235,7 +235,7 @@
     return new CategoryPath(label, delimiter);
   }
 
-  public boolean getPath(int ordinal, CategoryPath result) throws CorruptIndexException, IOException {
+  public boolean getPath(int ordinal, CategoryPath result) throws IOException {
     ensureOpen();
     String label = getLabel(ordinal);
     if (label==null) {
@@ -246,7 +246,7 @@
     return true;
   }
 
-  private String getLabel(int catID) throws CorruptIndexException, IOException {
+  private String getLabel(int catID) throws IOException {
     ensureOpen();
     // First try to find the answer in the LRU cache. It is very
     // unfortunate that we need to allocate an Integer object here -
Index: lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/ParentArray.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/ParentArray.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/ParentArray.java	(working copy)
@@ -147,7 +147,7 @@
    * NOTE: add() and refresh() CANNOT be used together. If you call add(),
    * this changes the arrays and refresh() can no longer be used.
    */
-  void add(int ordinal, int parentOrdinal) throws IOException {
+  void add(int ordinal, int parentOrdinal) {
     if (ordinal >= prefetchParentOrdinal.length) {
       // grow the array, if necessary.
       // In Java 6, we could just do Arrays.copyOf()...
Index: lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/Consts.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/Consts.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/Consts.java	(working copy)
@@ -41,12 +41,12 @@
     private String fullPath;
 
     @Override
-    public void stringField(FieldInfo fieldInfo, String value) throws IOException {
+    public void stringField(FieldInfo fieldInfo, String value) {
       fullPath = value;
     }
 
     @Override
-    public Status needsField(FieldInfo fieldInfo) throws IOException {
+    public Status needsField(FieldInfo fieldInfo) {
       return fullPath == null ? Status.YES : Status.STOP;
     }
 
Index: lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java	(working copy)
@@ -312,7 +312,7 @@
    * {@link #defaultTaxonomyWriterCache()}.
    */
   public DirectoryTaxonomyWriter(Directory directory, OpenMode openMode)
-  throws CorruptIndexException, LockObtainFailedException, IOException {
+  throws IOException {
     this(directory, openMode, defaultTaxonomyWriterCache());
   }
 
@@ -330,9 +330,7 @@
 
   // convenience constructors:
 
-  public DirectoryTaxonomyWriter(Directory d)
-  throws CorruptIndexException, LockObtainFailedException,
-  IOException {
+  public DirectoryTaxonomyWriter(Directory d) throws IOException {
     this(d, OpenMode.CREATE_OR_APPEND);
   }
 
@@ -342,14 +340,14 @@
    * {@link Directory}.
    */
   @Override
-  public synchronized void close() throws CorruptIndexException, IOException {
+  public synchronized void close() throws IOException {
     if (!isClosed) {
       indexWriter.commit(combinedCommitData(null));
       doClose();
     }
   }
   
-  private void doClose() throws CorruptIndexException, IOException {
+  private void doClose() throws IOException {
     indexWriter.close();
     isClosed = true;
     closeResources();
@@ -656,7 +654,7 @@
    * See {@link TaxonomyWriter#commit()}
    */ 
   @Override
-  public synchronized void commit() throws CorruptIndexException, IOException {
+  public synchronized void commit() throws IOException {
     ensureOpen();
     indexWriter.commit(combinedCommitData(null));
   }
@@ -681,7 +679,7 @@
    * See {@link TaxonomyWriter#commit(Map)}. 
    */
   @Override
-  public synchronized void commit(Map<String,String> commitUserData) throws CorruptIndexException, IOException {
+  public synchronized void commit(Map<String,String> commitUserData) throws IOException {
     ensureOpen();
     indexWriter.commit(combinedCommitData(commitUserData));
   }
@@ -691,7 +689,7 @@
    * See {@link IndexWriter#prepareCommit}.
    */
   @Override
-  public synchronized void prepareCommit() throws CorruptIndexException, IOException {
+  public synchronized void prepareCommit() throws IOException {
     ensureOpen();
     indexWriter.prepareCommit(combinedCommitData(null));
   }
@@ -701,7 +699,7 @@
    * See {@link IndexWriter#prepareCommit(Map)}
    */
   @Override
-  public synchronized void prepareCommit(Map<String,String> commitUserData) throws CorruptIndexException, IOException {
+  public synchronized void prepareCommit(Map<String,String> commitUserData) throws IOException {
     ensureOpen();
     indexWriter.prepareCommit(combinedCommitData(commitUserData));
   }
Index: lucene/facet/src/java/org/apache/lucene/facet/search/TotalFacetCounts.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/search/TotalFacetCounts.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/search/TotalFacetCounts.java	(working copy)
@@ -73,7 +73,7 @@
    * Construct by key - from index Directory or by recomputing.
    */
   private TotalFacetCounts (TaxonomyReader taxonomy, FacetIndexingParams facetIndexingParams,
-      int[][] counts, CreationType createType4Test) throws IOException, LockObtainFailedException {
+      int[][] counts, CreationType createType4Test) {
     this.taxonomy = taxonomy;
     this.facetIndexingParams = facetIndexingParams;
     this.totalCounts = counts;
Index: lucene/facet/src/java/org/apache/lucene/facet/search/ScoredDocIdCollector.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/search/ScoredDocIdCollector.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/search/ScoredDocIdCollector.java	(working copy)
@@ -51,7 +51,7 @@
     public boolean acceptsDocsOutOfOrder() { return true; }
 
     @Override
-    public void collect(int doc) throws IOException {
+    public void collect(int doc) {
       docIds.fastSet(docBase + doc);
       ++numDocIds;
     }
@@ -62,7 +62,7 @@
     }
 
     @Override
-    public ScoredDocIDsIterator scoredDocIdsIterator() throws IOException {
+    public ScoredDocIDsIterator scoredDocIdsIterator() {
       return new ScoredDocIDsIterator() {
 
         private DocIdSetIterator docIdsIter = docIds.iterator();
@@ -92,7 +92,7 @@
     }
 
     @Override
-    public void setScorer(Scorer scorer) throws IOException {}
+    public void setScorer(Scorer scorer) {}
   }
 
   private static final class ScoringDocIdCollector extends ScoredDocIdCollector {
@@ -124,7 +124,7 @@
     }
 
     @Override
-    public ScoredDocIDsIterator scoredDocIdsIterator() throws IOException {
+    public ScoredDocIDsIterator scoredDocIdsIterator() {
       return new ScoredDocIDsIterator() {
 
         private DocIdSetIterator docIdsIter = docIds.iterator();
@@ -160,7 +160,7 @@
     public void setDefaultScore(float defaultScore) {}
 
     @Override
-    public void setScorer(Scorer scorer) throws IOException {
+    public void setScorer(Scorer scorer) {
       this.scorer = scorer;
     }
   }
Index: lucene/facet/src/java/org/apache/lucene/facet/index/CategoryDocumentBuilder.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/index/CategoryDocumentBuilder.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/index/CategoryDocumentBuilder.java	(working copy)
@@ -93,11 +93,9 @@
    * @param taxonomyWriter
    *            to which new categories will be added, as well as translating
    *            known categories to ordinals
-   * @throws IOException
-   * 
+   *
    */
-  public CategoryDocumentBuilder(TaxonomyWriter taxonomyWriter)
-      throws IOException {
+  public CategoryDocumentBuilder(TaxonomyWriter taxonomyWriter) {
     this(taxonomyWriter, new DefaultFacetIndexingParams());
   }
 
@@ -111,10 +109,9 @@
    * @param params
    *            holds all parameters the indexing process should use such as
    *            category-list parameters
-   * @throws IOException
    */
   public CategoryDocumentBuilder(TaxonomyWriter taxonomyWriter,
-      FacetIndexingParams params) throws IOException {
+      FacetIndexingParams params) {
     this.taxonomyWriter = taxonomyWriter;
     this.indexingParams = params;
     this.categoriesMap = new HashMap<String, List<CategoryAttribute>>();
Index: lucene/facet/src/java/org/apache/lucene/facet/index/streaming/CategoryAttributesStream.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/index/streaming/CategoryAttributesStream.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/index/streaming/CategoryAttributesStream.java	(working copy)
@@ -59,7 +59,7 @@
   }
 
   @Override
-  public final boolean incrementToken() throws IOException {
+  public final boolean incrementToken() {
     if (iterator == null) {
       if (iterable == null) {
         return false;
Index: lucene/facet/src/java/org/apache/lucene/facet/enhancements/EnhancementsDocumentBuilder.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/enhancements/EnhancementsDocumentBuilder.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/enhancements/EnhancementsDocumentBuilder.java	(working copy)
@@ -46,10 +46,9 @@
    * @param taxonomyWriter
    * @param params
    *            Indexing params which include {@link CategoryEnhancement}s.
-   * @throws IOException
    */
   public EnhancementsDocumentBuilder(TaxonomyWriter taxonomyWriter,
-      EnhancementsIndexingParams params) throws IOException {
+      EnhancementsIndexingParams params) {
     super(taxonomyWriter, params);
   }
 
Index: lucene/facet/src/java/org/apache/lucene/facet/enhancements/EnhancementsCategoryTokenizer.java
===================================================================
--- lucene/facet/src/java/org/apache/lucene/facet/enhancements/EnhancementsCategoryTokenizer.java	(revision 1354855)
+++ lucene/facet/src/java/org/apache/lucene/facet/enhancements/EnhancementsCategoryTokenizer.java	(working copy)
@@ -59,10 +59,9 @@
    *            The stream of category tokens.
    * @param indexingParams
    *            The indexing params to use.
-   * @throws IOException
    */
   public EnhancementsCategoryTokenizer(TokenStream input,
-      EnhancementsIndexingParams indexingParams) throws IOException {
+      EnhancementsIndexingParams indexingParams) {
     super(input, indexingParams);
     payloadBytes = new byte[Vint8.MAXIMUM_BYTES_NEEDED
         * (indexingParams.getCategoryEnhancements().size() + 1)];
Index: lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java
===================================================================
--- lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java	(revision 1354855)
+++ lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiPhraseQueryParsing.java	(working copy)
@@ -67,7 +67,7 @@
     }
 
     @Override
-    public final boolean incrementToken() throws IOException {
+    public final boolean incrementToken() {
       clearAttributes();
       if (upto < tokens.length) {
         final TokenAndPos token = tokens[upto++];
Index: lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java
===================================================================
--- lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java	(revision 1354855)
+++ lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java	(working copy)
@@ -446,7 +446,7 @@
   }
 
   /** for testing DateTools support */
-  private String getDate(Date d, DateTools.Resolution resolution) throws Exception {
+  private String getDate(Date d, DateTools.Resolution resolution) {
     return DateTools.dateToString(d, resolution);
   }
 
Index: lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
===================================================================
--- lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java	(revision 1354855)
+++ lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java	(working copy)
@@ -680,8 +680,7 @@
   }
 
   /** for testing DateTools support */
-  private String getDate(Date d, DateTools.Resolution resolution)
-      throws Exception {
+  private String getDate(Date d, DateTools.Resolution resolution) {
     return DateTools.dateToString(d, resolution);
   }
   
Index: lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
===================================================================
--- lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java	(revision 1354855)
+++ lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java	(working copy)
@@ -586,7 +586,7 @@
   }
   
   /** for testing DateTools support */
-  private String getDate(Date d, DateTools.Resolution resolution) throws Exception {
+  private String getDate(Date d, DateTools.Resolution resolution) {
      return DateTools.dateToString(d, resolution);
   }
   
@@ -936,13 +936,13 @@
     final int[] type = new int[1];
     QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, "field", new MockAnalyzer(random(), MockTokenizer.WHITESPACE, false)) {
       @Override
-      protected Query getWildcardQuery(String field, String termStr) throws ParseException {
+      protected Query getWildcardQuery(String field, String termStr) {
         // override error checking of superclass
         type[0]=1;
         return new TermQuery(new Term(field,termStr));
       }
       @Override
-      protected Query getPrefixQuery(String field, String termStr) throws ParseException {
+      protected Query getPrefixQuery(String field, String termStr) {
         // override error checking of superclass
         type[0]=2;        
         return new TermQuery(new Term(field,termStr));
Index: lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/core/nodes/PhraseSlopQueryNode.java
===================================================================
--- lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/core/nodes/PhraseSlopQueryNode.java	(revision 1354855)
+++ lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/core/nodes/PhraseSlopQueryNode.java	(working copy)
@@ -29,13 +29,9 @@
   private int value = 0;
 
   /**
-   * @throws QueryNodeException
-   * @throws QueryNodeParseException
-   * @exception QueryNodeParseException
-   *              throw in overridden method to disallow
+   * @exception QueryNodeError throw in overridden method to disallow
    */
-  public PhraseSlopQueryNode(QueryNode query, int value)
-      throws QueryNodeException {
+  public PhraseSlopQueryNode(QueryNode query, int value) {
     if (query == null) {
       throw new QueryNodeError(new MessageImpl(
           QueryParserMessages.NODE_ACTION_NOT_SUPPORTED, "query", "null"));
Index: lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/core/nodes/BoostQueryNode.java
===================================================================
--- lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/core/nodes/BoostQueryNode.java	(revision 1354855)
+++ lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/core/nodes/BoostQueryNode.java	(working copy)
@@ -43,10 +43,8 @@
    *          the query to be boosted
    * @param value
    *          the boost value, it may vary from 0.0 to 1.0
-   * 
-   * @throws QueryNodeException
    */
-  public BoostQueryNode(QueryNode query, float value) throws QueryNodeException {
+  public BoostQueryNode(QueryNode query, float value) {
     if (query == null) {
       throw new QueryNodeError(new MessageImpl(
           QueryParserMessages.NODE_ACTION_NOT_SUPPORTED, "query", "null"));
Index: lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/BooleanQueryNodeBuilder.java
===================================================================
--- lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/BooleanQueryNodeBuilder.java	(revision 1354855)
+++ lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/BooleanQueryNodeBuilder.java	(working copy)
@@ -83,8 +83,7 @@
 
   }
 
-  private static BooleanClause.Occur getModifierValue(QueryNode node)
-      throws QueryNodeException {
+  private static BooleanClause.Occur getModifierValue(QueryNode node) {
 
     if (node instanceof ModifierQueryNode) {
       ModifierQueryNode mNode = ((ModifierQueryNode) node);
Index: lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/StandardBooleanQueryNodeBuilder.java
===================================================================
--- lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/StandardBooleanQueryNodeBuilder.java	(revision 1354855)
+++ lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/builders/StandardBooleanQueryNodeBuilder.java	(working copy)
@@ -84,8 +84,7 @@
 
   }
 
-  private static BooleanClause.Occur getModifierValue(QueryNode node)
-      throws QueryNodeException {
+  private static BooleanClause.Occur getModifierValue(QueryNode node) {
 
     if (node instanceof ModifierQueryNode) {
       ModifierQueryNode mNode = ((ModifierQueryNode) node);
Index: lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/QueryTemplateManager.java
===================================================================
--- lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/QueryTemplateManager.java	(revision 1354855)
+++ lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/QueryTemplateManager.java	(working copy)
@@ -97,7 +97,7 @@
    * Fast means of constructing query using a precompiled stylesheet
    */
   public static String getQueryAsXmlString(Properties formProperties, Templates template)
-      throws SAXException, IOException, ParserConfigurationException, TransformerException {
+      throws ParserConfigurationException, TransformerException {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     StreamResult result = new StreamResult(baos);
     transformCriteria(formProperties, template, result);
@@ -120,7 +120,7 @@
    * Fast means of constructing query using a cached,precompiled stylesheet
    */
   public static Document getQueryAsDOM(Properties formProperties, Templates template)
-      throws SAXException, IOException, ParserConfigurationException, TransformerException {
+      throws ParserConfigurationException, TransformerException {
     DOMResult result = new DOMResult();
     transformCriteria(formProperties, template, result);
     return (Document) result.getNode();
@@ -159,13 +159,13 @@
    * Fast transformation using a pre-compiled stylesheet (suitable for production environments)
    */
   public static void transformCriteria(Properties formProperties, Templates template, Result result)
-      throws SAXException, IOException, ParserConfigurationException, TransformerException {
+      throws ParserConfigurationException, TransformerException {
     transformCriteria(formProperties, template.newTransformer(), result);
   }
 
 
   public static void transformCriteria(Properties formProperties, Transformer transformer, Result result)
-      throws SAXException, IOException, ParserConfigurationException, TransformerException {
+      throws ParserConfigurationException, TransformerException {
     dbf.setNamespaceAware(true);
 
     //Create an XML document representing the search index document.
Index: lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java
===================================================================
--- lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java	(revision 1354855)
+++ lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java	(working copy)
@@ -478,11 +478,7 @@
     PositionIncrementAttribute posIncrAtt = null;
     int numTokens = 0;
 
-    try {
-      buffer.reset();
-    } catch (IOException e) {
-      throw new ParseException("Unable to initialize TokenStream to analyze query text", e);
-    }
+    buffer.reset();
 
     if (buffer.hasAttribute(TermToBytesRefAttribute.class)) {
       termAtt = buffer.getAttribute(TermToBytesRefAttribute.class);
@@ -1072,7 +1068,7 @@
   }
 
   // extracted from the .jj grammar
-  Query handleBoost(Query q, Token boost) throws ParseException {
+  Query handleBoost(Query q, Token boost) {
     if (boost != null) {
       float f = (float) 1.0;
       try {
Index: lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java
===================================================================
--- lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java	(revision 1354855)
+++ lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestRandomChains.java	(working copy)
@@ -224,7 +224,7 @@
   }
   
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     tokenizers = null;
     tokenfilters = null;
     charfilters = null;
Index: lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestBugInSomething.java
===================================================================
--- lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestBugInSomething.java	(revision 1354855)
+++ lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestBugInSomething.java	(working copy)
@@ -68,7 +68,7 @@
   CharStream wrappedStream = new CharStream() {
 
     @Override
-    public void mark(int readAheadLimit) throws IOException {
+    public void mark(int readAheadLimit) {
       throw new UnsupportedOperationException("mark(int)");
     }
 
@@ -78,32 +78,32 @@
     }
 
     @Override
-    public int read() throws IOException {
+    public int read() {
       throw new UnsupportedOperationException("read()");
     }
 
     @Override
-    public int read(char[] cbuf) throws IOException {
+    public int read(char[] cbuf) {
       throw new UnsupportedOperationException("read(char[])");
     }
 
     @Override
-    public int read(CharBuffer target) throws IOException {
+    public int read(CharBuffer target) {
       throw new UnsupportedOperationException("read(CharBuffer)");
     }
 
     @Override
-    public boolean ready() throws IOException {
+    public boolean ready() {
       throw new UnsupportedOperationException("ready()");
     }
 
     @Override
-    public void reset() throws IOException {
+    public void reset() {
       throw new UnsupportedOperationException("reset()");
     }
 
     @Override
-    public long skip(long n) throws IOException {
+    public long skip(long n) {
       throw new UnsupportedOperationException("skip(long)");
     }
 
@@ -113,12 +113,12 @@
     }
 
     @Override
-    public void close() throws IOException {
+    public void close() {
       throw new UnsupportedOperationException("close()");
     }
 
     @Override
-    public int read(char[] arg0, int arg1, int arg2) throws IOException {
+    public int read(char[] arg0, int arg1, int arg2) {
       throw new UnsupportedOperationException("read(char[], int, int)");
     }
   };
Index: lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleFilterTest.java
===================================================================
--- lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleFilterTest.java	(revision 1354855)
+++ lucene/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleFilterTest.java	(working copy)
@@ -54,7 +54,7 @@
     }
 
     @Override
-    public final boolean incrementToken() throws IOException {
+    public final boolean incrementToken() {
       clearAttributes();
       if (index < testToken.length) {
         Token t = testToken[index++];
Index: lucene/analysis/common/src/test/org/apache/lucene/analysis/position/PositionFilterTest.java
===================================================================
--- lucene/analysis/common/src/test/org/apache/lucene/analysis/position/PositionFilterTest.java	(revision 1354855)
+++ lucene/analysis/common/src/test/org/apache/lucene/analysis/position/PositionFilterTest.java	(working copy)
@@ -38,7 +38,7 @@
     }
 
     @Override
-    public final boolean incrementToken() throws IOException {
+    public final boolean incrementToken() {
       clearAttributes();
       if (index < testToken.length) {
         termAtt.setEmpty().append(testToken[index++]);
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizer.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizer.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/wikipedia/WikipediaTokenizer.java	(working copy)
@@ -331,7 +331,7 @@
   }
 
   @Override
-  public void end() throws IOException {
+  public void end() {
     // set final offset
     final int finalOffset = correctOffset(scanner.yychar() + scanner.yylength());
     this.offsetAtt.setOffset(finalOffset, finalOffset);
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKBigramFilter.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKBigramFilter.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKBigramFilter.java	(working copy)
@@ -205,7 +205,7 @@
   /**
    * refills buffers with new data from the current token.
    */
-  private void refill() throws IOException {
+  private void refill() {
     // compact buffers to keep them smallish if they become large
     // just a safety check, but technically we only need the last codepoint
     if (bufferLen > 64) {
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/WordnetSynonymParser.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/WordnetSynonymParser.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/WordnetSynonymParser.java	(working copy)
@@ -92,7 +92,7 @@
     return analyze(analyzer, text, reuse);
   }
   
-  private void addInternal(CharsRef synset[], int size) throws IOException {
+  private void addInternal(CharsRef synset[], int size) {
     if (size <= 1) {
       return; // nothing to do
     }
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/EmptyTokenStream.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/EmptyTokenStream.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/EmptyTokenStream.java	(working copy)
@@ -27,7 +27,7 @@
 public final class EmptyTokenStream extends TokenStream {
 
   @Override
-  public final boolean incrementToken() throws IOException {
+  public final boolean incrementToken() {
     return false;
   }
 
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/KeepWordFilter.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/KeepWordFilter.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/KeepWordFilter.java	(working copy)
@@ -43,7 +43,7 @@
   }
 
   @Override
-  public boolean accept() throws IOException {
+  public boolean accept() {
     return words.contains(termAtt.buffer(), 0, termAtt.length());
   }
 }
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/LengthFilter.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/LengthFilter.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/LengthFilter.java	(working copy)
@@ -48,7 +48,7 @@
   }
   
   @Override
-  public boolean accept() throws IOException {
+  public boolean accept() {
     final int len = termAtt.length();
     return (len >= min && len <= max);
   }
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/SingleTokenTokenStream.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/SingleTokenTokenStream.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneous/SingleTokenTokenStream.java	(working copy)
@@ -46,7 +46,7 @@
   }
 
   @Override
-  public final boolean incrementToken() throws IOException {
+  public final boolean incrementToken() {
     if (exhausted) {
       return false;
     } else {
@@ -58,7 +58,7 @@
   }
 
   @Override
-  public void reset() throws IOException {
+  public void reset() {
     exhausted = false;
   }
 
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizer.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizer.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/pattern/PatternTokenizer.java	(working copy)
@@ -84,7 +84,7 @@
   }
 
   @Override
-  public boolean incrementToken() throws IOException {
+  public boolean incrementToken() {
     if (index >= str.length()) return false;
     clearAttributes();
     if (group >= 0) {
@@ -130,7 +130,7 @@
   }
 
   @Override
-  public void end() throws IOException {
+  public void end() {
     final int ofs = correctOffset(str.length());
     offsetAtt.setOffset(ofs, ofs);
   }
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/PatternParser.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/PatternParser.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/PatternParser.java	(working copy)
@@ -64,7 +64,7 @@
 
   static final int ELEM_HYPHEN = 4;
 
-  public PatternParser() throws HyphenationException {
+  public PatternParser() {
     token = new StringBuilder();
     parser = createParser();
     parser.setContentHandler(this);
@@ -74,7 +74,7 @@
 
   }
 
-  public PatternParser(PatternConsumer consumer) throws HyphenationException {
+  public PatternParser(PatternConsumer consumer) {
     this();
     this.consumer = consumer;
   }
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/TernaryTree.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/TernaryTree.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/TernaryTree.java	(working copy)
@@ -648,7 +648,7 @@
 
   }
 
-  public static void main(String[] args) throws Exception {
+  public static void main(String[] args) {
     TernaryTree tt = new TernaryTree();
     tt.insert("Carlos", 'C');
     tt.insert("Car", 'r');
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/sinks/TeeSinkTokenFilter.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/sinks/TeeSinkTokenFilter.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/sinks/TeeSinkTokenFilter.java	(working copy)
@@ -212,7 +212,7 @@
     }
     
     @Override
-    public final boolean incrementToken() throws IOException {
+    public final boolean incrementToken() {
       // lazy init the iterator
       if (it == null) {
         it = cachedStates.iterator();
@@ -228,7 +228,7 @@
     }
   
     @Override
-    public final void end() throws IOException {
+    public final void end() {
       if (finalState != null) {
         restoreState(finalState);
       }
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/core/StopFilter.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/core/StopFilter.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/core/StopFilter.java	(working copy)
@@ -122,7 +122,7 @@
    * Returns the next input Token whose term() is not a stop word.
    */
   @Override
-  protected boolean accept() throws IOException {
+  protected boolean accept() {
     return !stopWords.contains(termAtt.buffer(), 0, termAtt.length());
   }
 
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/core/TypeTokenFilter.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/core/TypeTokenFilter.java	(revision 1354855)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/core/TypeTokenFilter.java	(working copy)
@@ -48,7 +48,7 @@
    * When the useWhiteList parameter is set to true then accept the token if its type is contained in the stopTypes
    */
   @Override
-  protected boolean accept() throws IOException {
+  protected boolean accept() {
     return useWhiteList == stopTypes.contains(typeAttribute.type());
   }
 }
Index: lucene/analysis/kuromoji/src/tools/java/org/apache/lucene/analysis/ja/util/BinaryDictionaryWriter.java
===================================================================
--- lucene/analysis/kuromoji/src/tools/java/org/apache/lucene/analysis/ja/util/BinaryDictionaryWriter.java	(revision 1354855)
+++ lucene/analysis/kuromoji/src/tools/java/org/apache/lucene/analysis/ja/util/BinaryDictionaryWriter.java	(working copy)
@@ -224,7 +224,7 @@
     lastWordId = wordId;
   }
 
-  protected final String getBaseFileName(String baseDir) throws IOException {
+  protected final String getBaseFileName(String baseDir) {
     return baseDir + File.separator + implClazz.getName().replace('.', File.separatorChar);
   }
   
Index: lucene/analysis/kuromoji/src/tools/java/org/apache/lucene/analysis/ja/util/DictionaryBuilder.java
===================================================================
--- lucene/analysis/kuromoji/src/tools/java/org/apache/lucene/analysis/ja/util/DictionaryBuilder.java	(revision 1354855)
+++ lucene/analysis/kuromoji/src/tools/java/org/apache/lucene/analysis/ja/util/DictionaryBuilder.java	(working copy)
@@ -55,7 +55,7 @@
     System.out.println("done");
   }
   
-  public static void main(String[] args) throws IOException, ClassNotFoundException {
+  public static void main(String[] args) throws IOException {
     DictionaryFormat format;
     if (args[0].equalsIgnoreCase("ipadic")) {
       format = DictionaryFormat.IPADIC;
Index: lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapanesePartOfSpeechStopFilter.java
===================================================================
--- lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapanesePartOfSpeechStopFilter.java	(revision 1354855)
+++ lucene/analysis/kuromoji/src/java/org/apache/lucene/analysis/ja/JapanesePartOfSpeechStopFilter.java	(working copy)
@@ -37,7 +37,7 @@
   }
 
   @Override
-  protected boolean accept() throws IOException {
+  protected boolean accept() {
     final String pos = posAtt.getPartOfSpeech();
     return pos == null || !stopTags.contains(pos);
   }
Index: lucene/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/GenerateJFlexSupplementaryMacros.java
===================================================================
--- lucene/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/GenerateJFlexSupplementaryMacros.java	(revision 1354855)
+++ lucene/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/GenerateJFlexSupplementaryMacros.java	(working copy)
@@ -55,7 +55,7 @@
       + " */" + NL + NL;
     
   
-  public static void main(String args[]) throws Exception {
+  public static void main(String args[]) {
     outputHeader();
     outputMacro("ALetterSupp",         "[:WordBreak=ALetter:]");
     outputMacro("FormatSupp",          "[:WordBreak=Format:]");
Index: lucene/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/GenerateHTMLStripCharFilterSupplementaryMacros.java
===================================================================
--- lucene/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/GenerateHTMLStripCharFilterSupplementaryMacros.java	(revision 1354855)
+++ lucene/analysis/icu/src/tools/java/org/apache/lucene/analysis/icu/GenerateHTMLStripCharFilterSupplementaryMacros.java	(working copy)
@@ -52,7 +52,7 @@
       + " */" + NL + NL;
 
 
-  public static void main(String args[]) throws Exception {
+  public static void main(String args[]) {
     outputHeader();
     outputMacro("ID_Start_Supp", "[:ID_Start:]");
     outputMacro("ID_Continue_Supp", "[:ID_Continue:]");
Index: lucene/analysis/icu/src/java/org/apache/lucene/analysis/icu/segmentation/ICUTokenizer.java
===================================================================
--- lucene/analysis/icu/src/java/org/apache/lucene/analysis/icu/segmentation/ICUTokenizer.java	(revision 1354855)
+++ lucene/analysis/icu/src/java/org/apache/lucene/analysis/icu/segmentation/ICUTokenizer.java	(working copy)
@@ -109,7 +109,7 @@
   }
   
   @Override
-  public void end() throws IOException {
+  public void end() {
     final int finalOffset = (length < 0) ? offset : offset + length;
     offsetAtt.setOffset(correctOffset(finalOffset), correctOffset(finalOffset));
   }  
Index: lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/SentenceTokenizer.java
===================================================================
--- lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/SentenceTokenizer.java	(revision 1354855)
+++ lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/SentenceTokenizer.java	(working copy)
@@ -123,7 +123,7 @@
   }
 
   @Override
-  public void end() throws IOException {
+  public void end() {
     // set final offset
     final int finalOffset = correctOffset(tokenEnd);
     offsetAtt.setOffset(finalOffset, finalOffset);
Index: lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/WordDictionary.java
===================================================================
--- lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/WordDictionary.java	(revision 1354855)
+++ lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/WordDictionary.java	(working copy)
@@ -190,8 +190,7 @@
    * @throws IOException
    * @throws UnsupportedEncodingException
    */
-  private int loadMainDataFromFile(String dctFilePath)
-      throws FileNotFoundException, IOException, UnsupportedEncodingException {
+  private int loadMainDataFromFile(String dctFilePath) throws IOException {
     int i, cnt, length, total = 0;
     // The file only counted 6763 Chinese characters plus 5 reserved slots 3756~3760.
     // The 3756th is used (as a header) to store information.
Index: lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/BigramDictionary.java
===================================================================
--- lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/BigramDictionary.java	(revision 1354855)
+++ lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/BigramDictionary.java	(working copy)
@@ -148,8 +148,7 @@
    * @throws IOException
    * @throws UnsupportedEncodingException
    */
-  public void loadFromFile(String dctFilePath) throws FileNotFoundException,
-      IOException, UnsupportedEncodingException {
+  public void loadFromFile(String dctFilePath) throws IOException {
 
     int i, cnt, length, total = 0;
     // The file only counted 6763 Chinese characters plus 5 reserved slots 3756~3760.  
Index: lucene/demo/src/java/org/apache/lucene/demo/xmlparser/FormBasedXmlQueryDemo.java
===================================================================
--- lucene/demo/src/java/org/apache/lucene/demo/xmlparser/FormBasedXmlQueryDemo.java	(revision 1354855)
+++ lucene/demo/src/java/org/apache/lucene/demo/xmlparser/FormBasedXmlQueryDemo.java	(working copy)
@@ -126,7 +126,7 @@
     }
   }
 
-  private void openExampleIndex() throws CorruptIndexException, IOException {
+  private void openExampleIndex() throws IOException {
     //Create a RAM-based index from our test data file
     RAMDirectory rd = new RAMDirectory();
     IndexWriterConfig iwConfig = new IndexWriterConfig(Version.LUCENE_40, analyzer);
Index: lucene/core/src/test/org/apache/lucene/util/TestNumericUtils.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/util/TestNumericUtils.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/util/TestNumericUtils.java	(working copy)
@@ -219,7 +219,7 @@
   /** Note: The neededBounds Iterable must be unsigned (easier understanding what's happening) */
   private void assertLongRangeSplit(final long lower, final long upper, int precisionStep,
     final boolean useBitSet, final Iterable<Long> expectedBounds, final Iterable<Integer> expectedShifts
-  ) throws Exception {
+  ) {
     // Cannot use FixedBitSet since the range could be long:
     final OpenBitSet bits=useBitSet ? new OpenBitSet(upper-lower+1) : null;
     final Iterator<Long> neededBounds = (expectedBounds == null) ? null : expectedBounds.iterator();
@@ -460,7 +460,7 @@
   /** Note: The neededBounds Iterable must be unsigned (easier understanding what's happening) */
   private void assertIntRangeSplit(final int lower, final int upper, int precisionStep,
     final boolean useBitSet, final Iterable<Integer> expectedBounds, final Iterable<Integer> expectedShifts
-  ) throws Exception {
+  ) {
     final FixedBitSet bits=useBitSet ? new FixedBitSet(upper-lower+1) : null;
     final Iterator<Integer> neededBounds = (expectedBounds == null) ? null : expectedBounds.iterator();
     final Iterator<Integer> neededShifts = (expectedShifts == null) ? null : expectedShifts.iterator();
Index: lucene/core/src/test/org/apache/lucene/util/junitcompat/TestReproduceMessage.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/util/junitcompat/TestReproduceMessage.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/util/junitcompat/TestReproduceMessage.java	(working copy)
@@ -293,7 +293,7 @@
     Assert.assertTrue(runAndReturnSyserr().contains("NOTE: reproduce with:"));
   }
 
-  private String runAndReturnSyserr() throws Exception {
+  private String runAndReturnSyserr() {
     JUnitCore.runClasses(Nested.class);
 
     String err = getSysErr();
Index: lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldPostingsFormat.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldPostingsFormat.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/codecs/perfield/TestPerFieldPostingsFormat.java	(working copy)
@@ -189,7 +189,7 @@
   }
 
   public void assertQuery(Term t, Directory dir, int num)
-      throws CorruptIndexException, IOException {
+      throws IOException {
     if (VERBOSE) {
       System.out.println("\nTEST: assertQuery " + t);
     }
Index: lucene/core/src/test/org/apache/lucene/TestMergeSchedulerExternal.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/TestMergeSchedulerExternal.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/TestMergeSchedulerExternal.java	(working copy)
@@ -47,7 +47,7 @@
   private class MyMergeScheduler extends ConcurrentMergeScheduler {
 
     private class MyMergeThread extends ConcurrentMergeScheduler.MergeThread {
-      public MyMergeThread(IndexWriter writer, MergePolicy.OneMerge merge) throws IOException {
+      public MyMergeThread(IndexWriter writer, MergePolicy.OneMerge merge) {
         super(writer, merge);
         mergeThreadCreated = true;
       }
@@ -125,7 +125,7 @@
     }
 
     @Override
-    public void close() throws CorruptIndexException, IOException {}
+    public void close() throws IOException {}
     
   }
 
Index: lucene/core/src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/analysis/TestCachingTokenFilter.java	(working copy)
@@ -45,7 +45,7 @@
       private OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class);
       
       @Override
-      public boolean incrementToken() throws IOException {
+      public boolean incrementToken() {
         if (index == tokens.length) {
           return false;
         } else {
Index: lucene/core/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java	(working copy)
@@ -248,8 +248,7 @@
     directory.close();
   }
   
-  public void testShrinkToAfterShortestMatch() throws CorruptIndexException,
-      LockObtainFailedException, IOException {
+  public void testShrinkToAfterShortestMatch() throws IOException {
     Directory directory = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory,
                                                      newIndexWriterConfig(TEST_VERSION_CURRENT, new TestPayloadAnalyzer()));
@@ -286,8 +285,7 @@
     directory.close();
   }
   
-  public void testShrinkToAfterShortestMatch2() throws CorruptIndexException,
-      LockObtainFailedException, IOException {
+  public void testShrinkToAfterShortestMatch2() throws IOException {
     Directory directory = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory,
                                                      newIndexWriterConfig(TEST_VERSION_CURRENT, new TestPayloadAnalyzer()));
@@ -322,8 +320,7 @@
     directory.close();
   }
   
-  public void testShrinkToAfterShortestMatch3() throws CorruptIndexException,
-      LockObtainFailedException, IOException {
+  public void testShrinkToAfterShortestMatch3() throws IOException {
     Directory directory = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory,
                                                      newIndexWriterConfig(TEST_VERSION_CURRENT, new TestPayloadAnalyzer()));
Index: lucene/core/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java	(working copy)
@@ -52,12 +52,12 @@
     }
 
     @Override
-    public boolean next() throws IOException {
+    public boolean next() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
     @Override
-    public boolean skipTo(int target) throws IOException {
+    public boolean skipTo(int target) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
@@ -67,7 +67,7 @@
     }
 
     @Override
-    public Collection<byte[]> getPayload() throws IOException {
+    public Collection<byte[]> getPayload() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
@@ -86,7 +86,7 @@
     }
 
     @Override
-    public Spans getSpans(AtomicReaderContext context, Bits acceptDocs, Map<Term,TermContext> termContexts) throws IOException {
+    public Spans getSpans(AtomicReaderContext context, Bits acceptDocs, Map<Term,TermContext> termContexts) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
@@ -100,7 +100,7 @@
   static final class JustCompilePayloadSpans extends Spans {
 
     @Override
-    public Collection<byte[]> getPayload() throws IOException {
+    public Collection<byte[]> getPayload() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
@@ -120,12 +120,12 @@
     }
 
     @Override
-    public boolean next() throws IOException {
+    public boolean next() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
     @Override
-    public boolean skipTo(int target) throws IOException {
+    public boolean skipTo(int target) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
@@ -144,7 +144,7 @@
     }
 
     @Override
-    protected boolean setFreqCurrentDoc() throws IOException {
+    protected boolean setFreqCurrentDoc() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
   }
Index: lucene/core/src/test/org/apache/lucene/search/FieldCacheRewriteMethod.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/FieldCacheRewriteMethod.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/FieldCacheRewriteMethod.java	(working copy)
@@ -94,12 +94,12 @@
       TermsEnum termsEnum = query.getTermsEnum(new Terms() {
         
         @Override
-        public Comparator<BytesRef> getComparator() throws IOException {
+        public Comparator<BytesRef> getComparator() {
           return BytesRef.getUTF8SortedAsUnicodeComparator();
         }
         
         @Override
-        public TermsEnum iterator(TermsEnum reuse) throws IOException {
+        public TermsEnum iterator(TermsEnum reuse) {
           return fcsi.getTermsEnum();
         }
 
@@ -109,17 +109,17 @@
         }
 
         @Override
-        public long getSumDocFreq() throws IOException {
+        public long getSumDocFreq() {
           return -1;
         }
 
         @Override
-        public int getDocCount() throws IOException {
+        public int getDocCount() {
           return -1;
         }
 
         @Override
-        public long size() throws IOException {
+        public long size() {
           return -1;
         }
       });
Index: lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java	(working copy)
@@ -207,7 +207,7 @@
       Scorer scorer;
       
       @Override
-      public void setScorer(Scorer scorer) throws IOException {
+      public void setScorer(Scorer scorer) {
         this.scorer = scorer;
       }
       
@@ -218,7 +218,7 @@
       }
       
       @Override
-      public void setNextReader(AtomicReaderContext context) throws IOException {
+      public void setNextReader(AtomicReaderContext context) {
         // do nothing
       }
       
Index: lucene/core/src/test/org/apache/lucene/search/TestRegexpQuery.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestRegexpQuery.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestRegexpQuery.java	(working copy)
@@ -102,7 +102,7 @@
           BasicAutomata.makeString("brown"),
           BasicAutomata.makeString("bob")));
       
-      public Automaton getAutomaton(String name) throws IOException {
+      public Automaton getAutomaton(String name) {
         if (name.equals("quickBrown")) return quickBrownAutomaton;
         else return null;
       }
Index: lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java	(working copy)
@@ -55,19 +55,18 @@
     }
     
     @Override
-    public void collect(int doc) throws IOException {
+    public void collect(int doc) {
       ++totalHits;
       pq.insertWithOverflow(new ScoreDoc(doc + base, scores[idx++]));
     }
 
     @Override
-    public void setNextReader(AtomicReaderContext context)
-        throws IOException {
+    public void setNextReader(AtomicReaderContext context) {
       base = context.docBase;
     }
 
     @Override
-    public void setScorer(Scorer scorer) throws IOException {
+    public void setScorer(Scorer scorer) {
       // Don't do anything. Assign scores in random
     }
     
Index: lucene/core/src/test/org/apache/lucene/search/TestFieldValueFilter.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestFieldValueFilter.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestFieldValueFilter.java	(working copy)
@@ -90,7 +90,7 @@
   }
 
   private int[] buildIndex(RandomIndexWriter writer, int docs)
-      throws IOException, CorruptIndexException {
+      throws IOException {
     int[] docStates = new int[docs];
     for (int i = 0; i < docs; i++) {
       Document doc = new Document();
Index: lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java	(working copy)
@@ -81,14 +81,14 @@
     BooleanWeight weight = (BooleanWeight) new BooleanQuery().createWeight(searcher);
     Scorer[] scorers = new Scorer[] {new Scorer(weight) {
       private int doc = -1;
-      @Override public float score() throws IOException { return 0; }
+      @Override public float score() { return 0; }
       @Override public int docID() { return doc; }
       
-      @Override public int nextDoc() throws IOException {
+      @Override public int nextDoc() {
         return doc = doc == -1 ? 3000 : NO_MORE_DOCS;
       }
 
-      @Override public int advance(int target) throws IOException {
+      @Override public int advance(int target) {
         return doc = target <= 3000 ? 3000 : NO_MORE_DOCS;
       }
       
@@ -104,7 +104,7 @@
       }
       
       @Override
-      public void collect(int doc) throws IOException {
+      public void collect(int doc) {
         hits.add(docBase+doc);
       }
       
@@ -158,7 +158,7 @@
       }
       
       @Override
-      public void collect(int doc) throws IOException {
+      public void collect(int doc) {
         count[0]++;
       }
       
Index: lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery2.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery2.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery2.java	(working copy)
@@ -184,7 +184,7 @@
     }
   }
   
-  private MultiPhraseQuery randomPhraseQuery(long seed) throws Exception {
+  private MultiPhraseQuery randomPhraseQuery(long seed) {
     Random random = new Random(seed);
     int length = _TestUtil.nextInt(random, 2, 5);
     MultiPhraseQuery pq = new MultiPhraseQuery();
Index: lucene/core/src/test/org/apache/lucene/search/TestCachingCollector.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestCachingCollector.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestCachingCollector.java	(working copy)
@@ -85,13 +85,13 @@
         int prevDocID = -1;
 
         @Override
-        public void setScorer(Scorer scorer) throws IOException {}
+        public void setScorer(Scorer scorer) {}
 
         @Override
-        public void setNextReader(AtomicReaderContext context) throws IOException {}
+        public void setNextReader(AtomicReaderContext context) {}
 
         @Override
-        public void collect(int doc) throws IOException {
+        public void collect(int doc) {
           assertEquals(prevDocID + 1, doc);
           prevDocID = doc;
         }
Index: lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java	(working copy)
@@ -185,8 +185,7 @@
    * Similarities in {@link #sims} and checks if the score is valid; i.e. it
    * is a finite positive real number.
    */
-  private void unitTestCore(BasicStats stats, float freq, int docLen)
-      throws IOException { 
+  private void unitTestCore(BasicStats stats, float freq, int docLen) {
     for (SimilarityBase sim : sims) {
       BasicStats realStats = (BasicStats) sim.computeWeight(stats.getTotalBoost(),
           toCollectionStats(stats), 
@@ -518,8 +517,7 @@
    * Similarities in {@link #sims} and compares the score against the manually
    * computed {@code gold}.
    */
-  private void correctnessTestCore(SimilarityBase sim, float gold)
-      throws IOException {
+  private void correctnessTestCore(SimilarityBase sim, float gold) {
     BasicStats stats = createStats();
     BasicStats realStats = (BasicStats) sim.computeWeight(stats.getTotalBoost(),
         toCollectionStats(stats), 
Index: lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java	(working copy)
@@ -157,7 +157,7 @@
        bottomVal = values[slot];
      }
 
-     private int docVal(int doc) throws IOException {
+     private int docVal(int doc) {
        int ord = idIndex.getOrd(doc);
        if (ord == 0) {
          return 0;
@@ -169,12 +169,12 @@
      }
 
      @Override
-     public int compareBottom(int doc) throws IOException {
+     public int compareBottom(int doc) {
        return docVal(doc) - bottomVal;
      }
 
      @Override
-     public void copy(int slot, int doc) throws IOException {
+     public void copy(int slot, int doc) {
        values[slot] = docVal(doc);
      }
 
@@ -190,7 +190,7 @@
      }
 
      @Override
-     public int compareDocToValue(int doc, Integer valueObj) throws IOException {
+     public int compareDocToValue(int doc, Integer valueObj) {
        final int value = valueObj.intValue();
        final int docValue = docVal(doc);
        // values will be small enough that there is no overflow concern
Index: lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java	(working copy)
@@ -208,7 +208,7 @@
     final ExecutorService es = random().nextBoolean() ? null : Executors.newCachedThreadPool(new NamedThreadFactory("testIntermediateClose"));
     final SearcherFactory factory = new SearcherFactory() {
       @Override
-      public IndexSearcher newSearcher(IndexReader r) throws IOException {
+      public IndexSearcher newSearcher(IndexReader r) {
         try {
           if (triedReopen.get()) {
             awaitEnterWarm.countDown();
@@ -334,7 +334,7 @@
 
     final SearcherFactory theEvilOne = new SearcherFactory() {
       @Override
-      public IndexSearcher newSearcher(IndexReader ignored) throws IOException {
+      public IndexSearcher newSearcher(IndexReader ignored) {
         return new IndexSearcher(other);
       }
       };
Index: lucene/core/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java	(working copy)
@@ -178,7 +178,7 @@
       private int base = 0;
       private Scorer scorer;
       @Override
-      public void setScorer(Scorer scorer) throws IOException {
+      public void setScorer(Scorer scorer) {
         this.scorer = scorer;
       }
       @Override
Index: lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java	(working copy)
@@ -34,17 +34,17 @@
       super(weight);
     }
     
-    @Override public float score() throws IOException {
+    @Override public float score() {
       return idx == scores.length ? Float.NaN : scores[idx];
     }
 
     @Override public int docID() { return idx; }
 
-    @Override public int nextDoc() throws IOException {
+    @Override public int nextDoc() {
       return ++idx != scores.length ? idx : NO_MORE_DOCS;
     }
     
-    @Override public int advance(int target) throws IOException {
+    @Override public int advance(int target) {
       idx = target;
       return idx < scores.length ? idx : NO_MORE_DOCS;
     }
Index: lucene/core/src/test/org/apache/lucene/search/TestPrefixRandom.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestPrefixRandom.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestPrefixRandom.java	(working copy)
@@ -91,7 +91,7 @@
     private class SimplePrefixTermsEnum extends FilteredTermsEnum {
       private final BytesRef prefix;
 
-      private SimplePrefixTermsEnum(TermsEnum tenum, BytesRef prefix) throws IOException {
+      private SimplePrefixTermsEnum(TermsEnum tenum, BytesRef prefix) {
         super(tenum);
         this.prefix = prefix;
         setInitialSeekTerm(new BytesRef(""));
Index: lucene/core/src/test/org/apache/lucene/search/TestDocBoost.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestDocBoost.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestDocBoost.java	(working copy)
@@ -63,7 +63,7 @@
          private int base = 0;
          private Scorer scorer;
          @Override
-         public void setScorer(Scorer scorer) throws IOException {
+         public void setScorer(Scorer scorer) {
           this.scorer = scorer;
          }
          @Override
Index: lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java	(working copy)
@@ -116,7 +116,7 @@
       CharacterRunAutomaton runAutomaton = new CharacterRunAutomaton(automaton);
       CharsRef utf16 = new CharsRef(10);
 
-      private SimpleAutomatonTermsEnum(TermsEnum tenum) throws IOException {
+      private SimpleAutomatonTermsEnum(TermsEnum tenum) {
         super(tenum);
         setInitialSeekTerm(new BytesRef(""));
       }
Index: lucene/core/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java	(working copy)
@@ -36,7 +36,7 @@
       super(weight);
     }
     
-    @Override public float score() throws IOException {
+    @Override public float score() {
       // advance idx on purpose, so that consecutive calls to score will get
       // different results. This is to emulate computation of a score. If
       // ScoreCachingWrappingScorer is used, this should not be called more than
@@ -46,11 +46,11 @@
 
     @Override public int docID() { return doc; }
 
-    @Override public int nextDoc() throws IOException {
+    @Override public int nextDoc() {
       return ++doc < scores.length ? doc : NO_MORE_DOCS;
     }
     
-    @Override public int advance(int target) throws IOException {
+    @Override public int advance(int target) {
       doc = target;
       return doc < scores.length ? doc : NO_MORE_DOCS;
     }
@@ -80,11 +80,10 @@
       ++idx;
     }
 
-    @Override public void setNextReader(AtomicReaderContext context)
-        throws IOException {
+    @Override public void setNextReader(AtomicReaderContext context) {
     }
 
-    @Override public void setScorer(Scorer scorer) throws IOException {
+    @Override public void setScorer(Scorer scorer) {
       this.scorer = new ScoreCachingWrappingScorer(scorer);
     }
     
Index: lucene/core/src/test/org/apache/lucene/search/JustCompileSearch.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/JustCompileSearch.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/JustCompileSearch.java	(working copy)
@@ -41,18 +41,17 @@
   static final class JustCompileCollector extends Collector {
 
     @Override
-    public void collect(int doc) throws IOException {
+    public void collect(int doc) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
     @Override
-    public void setNextReader(AtomicReaderContext context)
-        throws IOException {
+    public void setNextReader(AtomicReaderContext context) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
     @Override
-    public void setScorer(Scorer scorer) throws IOException {
+    public void setScorer(Scorer scorer) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
     
@@ -66,7 +65,7 @@
   static final class JustCompileDocIdSet extends DocIdSet {
 
     @Override
-    public DocIdSetIterator iterator() throws IOException {
+    public DocIdSetIterator iterator() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
     
@@ -80,12 +79,12 @@
     }
 
     @Override
-    public int nextDoc() throws IOException {
+    public int nextDoc() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
     
     @Override
-    public int advance(int target) throws IOException {
+    public int advance(int target) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
   }
@@ -114,12 +113,12 @@
     }
 
     @Override
-    public int compareBottom(int doc) throws IOException {
+    public int compareBottom(int doc) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
     @Override
-    public void copy(int slot, int doc) throws IOException {
+    public void copy(int slot, int doc) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
@@ -129,8 +128,7 @@
     }
 
     @Override
-    public FieldComparator<Object> setNextReader(AtomicReaderContext context)
-        throws IOException {
+    public FieldComparator<Object> setNextReader(AtomicReaderContext context) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
@@ -149,7 +147,7 @@
 
     @Override
     public FieldComparator<?> newComparator(String fieldname, int numHits,
-        int sortPos, boolean reversed) throws IOException {
+        int sortPos, boolean reversed) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
     
@@ -160,7 +158,7 @@
     // still added here in case someone will add abstract methods in the future.
     
     @Override
-    public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException {
+    public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) {
       return null;
     }
   }
@@ -194,12 +192,12 @@
   static final class JustCompilePhraseScorer extends PhraseScorer {
 
     JustCompilePhraseScorer(Weight weight, PhraseQuery.PostingsAndFreq[] postings,
-        Similarity.SloppySimScorer docScorer) throws IOException {
+        Similarity.SloppySimScorer docScorer) {
       super(weight, postings, docScorer);
     }
 
     @Override
-    protected float phraseFreq() throws IOException {
+    protected float phraseFreq() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
     
@@ -221,13 +219,12 @@
     }
 
     @Override
-    public boolean score(Collector collector, int max, int firstDocID)
-        throws IOException {
+    public boolean score(Collector collector, int max, int firstDocID) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
     
     @Override
-    public float score() throws IOException {
+    public float score() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
@@ -237,12 +234,12 @@
     }
 
     @Override
-    public int nextDoc() throws IOException {
+    public int nextDoc() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
     
     @Override
-    public int advance(int target) throws IOException {
+    public int advance(int target) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
   }
@@ -255,12 +252,12 @@
     }
 
     @Override
-    public ExactSimScorer exactSimScorer(SimWeight stats, AtomicReaderContext context) throws IOException {
+    public ExactSimScorer exactSimScorer(SimWeight stats, AtomicReaderContext context) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
     @Override
-    public SloppySimScorer sloppySimScorer(SimWeight stats, AtomicReaderContext context) throws IOException {
+    public SloppySimScorer sloppySimScorer(SimWeight stats, AtomicReaderContext context) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
@@ -277,18 +274,17 @@
     }
 
     @Override
-    public void collect(int doc) throws IOException {
+    public void collect(int doc) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
     @Override
-    public void setNextReader(AtomicReaderContext context)
-        throws IOException {
+    public void setNextReader(AtomicReaderContext context) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
     @Override
-    public void setScorer(Scorer scorer) throws IOException {
+    public void setScorer(Scorer scorer) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
     
@@ -317,7 +313,7 @@
   static final class JustCompileWeight extends Weight {
 
     @Override
-    public Explanation explain(AtomicReaderContext context, int doc) throws IOException {
+    public Explanation explain(AtomicReaderContext context, int doc) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
@@ -332,14 +328,13 @@
     }
 
     @Override
-    public float getValueForNormalization() throws IOException {
+    public float getValueForNormalization() {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
 
     @Override
     public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder,
-        boolean topScorer, Bits acceptDocs)
-        throws IOException {
+        boolean topScorer, Bits acceptDocs) {
       throw new UnsupportedOperationException(UNSUPPORTED_MSG);
     }
     
Index: lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java	(working copy)
@@ -89,7 +89,7 @@
       private Scorer scorer;
       
       @Override
-      public void setScorer(Scorer scorer) throws IOException {
+      public void setScorer(Scorer scorer) {
         this.scorer = scorer;
       }
       
Index: lucene/core/src/test/org/apache/lucene/search/TestNRTManager.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestNRTManager.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestNRTManager.java	(working copy)
@@ -367,7 +367,7 @@
 
     public LatchedIndexWriter(Directory d, IndexWriterConfig conf,
         CountDownLatch latch, CountDownLatch signal)
-        throws CorruptIndexException, LockObtainFailedException, IOException {
+        throws IOException {
       super(d, conf);
       this.latch = latch;
       this.signal = signal;
@@ -376,7 +376,7 @@
 
     public void updateDocument(Term term,
         Iterable<? extends IndexableField> doc, Analyzer analyzer)
-        throws CorruptIndexException, IOException {
+        throws IOException {
       super.updateDocument(term, doc, analyzer);
       try {
         if (waitAfterUpdate) {
@@ -398,7 +398,7 @@
 
     final SearcherFactory theEvilOne = new SearcherFactory() {
       @Override
-      public IndexSearcher newSearcher(IndexReader ignored) throws IOException {
+      public IndexSearcher newSearcher(IndexReader ignored) {
         return new IndexSearcher(other);
       }
       };
Index: lucene/core/src/test/org/apache/lucene/search/TestFilteredSearch.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestFilteredSearch.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestFilteredSearch.java	(working copy)
@@ -44,7 +44,7 @@
 
   private static final String FIELD = "category";
   
-  public void testFilteredSearch() throws CorruptIndexException, LockObtainFailedException, IOException {
+  public void testFilteredSearch() throws IOException {
     boolean enforceSingleSegment = true;
     Directory directory = newDirectory();
     int[] filterBits = {1, 36};
Index: lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java	(working copy)
@@ -78,7 +78,7 @@
     searcher.search(new TermQuery(b), new Collector() {
          private Scorer scorer;
          @Override
-        public void setScorer(Scorer scorer) throws IOException {
+        public void setScorer(Scorer scorer) {
            this.scorer = scorer; 
          }
          @Override
@@ -101,7 +101,7 @@
          private int base = 0;
          private Scorer scorer;
          @Override
-        public void setScorer(Scorer scorer) throws IOException {
+        public void setScorer(Scorer scorer) {
            this.scorer = scorer; 
          }
          @Override
@@ -127,7 +127,7 @@
        new Collector() {
          private Scorer scorer;
          @Override
-         public void setScorer(Scorer scorer) throws IOException {
+         public void setScorer(Scorer scorer) {
           this.scorer = scorer; 
          }
          @Override
@@ -148,7 +148,7 @@
     searcher.search(pq, new Collector() {
       private Scorer scorer;
       @Override
-      public void setScorer(Scorer scorer) throws IOException {
+      public void setScorer(Scorer scorer) {
         this.scorer = scorer; 
       }
       @Override
Index: lucene/core/src/test/org/apache/lucene/search/TestSort.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestSort.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestSort.java	(working copy)
@@ -87,7 +87,7 @@
   private Sort sort;
 
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     NUM_STRINGS = atLeast(500);
   }
 
@@ -217,7 +217,7 @@
     return getIndex (true, true);
   }
   
-  private IndexSearcher getFullStrings() throws CorruptIndexException, LockObtainFailedException, IOException {
+  private IndexSearcher getFullStrings() throws IOException {
     Directory indexStore = newDirectory();
     dirs.add(indexStore);
     IndexWriter writer = new IndexWriter(
Index: lucene/core/src/test/org/apache/lucene/search/BaseTestRangeFilter.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/BaseTestRangeFilter.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/BaseTestRangeFilter.java	(working copy)
@@ -54,9 +54,7 @@
       this.minR = minR;
       this.maxR = maxR;
       this.allowNegativeRandomInts = allowNegativeRandomInts;
-      try {
-        index = newDirectory(random);
-      } catch (IOException e) { throw new RuntimeException(e); }
+      index = newDirectory(random);
     }
   }
   
Index: lucene/core/src/test/org/apache/lucene/search/TestDocIdSet.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestDocIdSet.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/search/TestDocIdSet.java	(working copy)
@@ -50,13 +50,13 @@
             }
             
             @Override
-            public int nextDoc() throws IOException {
+            public int nextDoc() {
               docid++;
               return docid < maxdoc ? docid : (docid = NO_MORE_DOCS);
             }
 
             @Override
-            public int advance(int target) throws IOException {
+            public int advance(int target) {
               while (nextDoc() < target) {}
               return docid;
             }
@@ -115,7 +115,7 @@
     // Now search w/ a Filter which returns a null DocIdSet
     Filter f = new Filter() {
       @Override
-      public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException {
+      public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) {
         return null;
       }
     };
@@ -141,7 +141,7 @@
       // Now search w/ a Filter which returns a null DocIdSet
     Filter f = new Filter() {
       @Override
-      public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException {
+      public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) {
         final DocIdSet innerNullIteratorSet = new DocIdSet() {
           @Override
           public DocIdSetIterator iterator() {
Index: lucene/core/src/test/org/apache/lucene/index/TestForceMergeForever.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestForceMergeForever.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestForceMergeForever.java	(working copy)
@@ -40,7 +40,7 @@
     }
 
     @Override
-    public void merge(MergePolicy.OneMerge merge) throws CorruptIndexException, IOException {
+    public void merge(MergePolicy.OneMerge merge) throws IOException {
       if (merge.maxNumSegments != -1 && (first || merge.segments.size() == 1)) {
         first = false;
         if (VERBOSE) {
Index: lucene/core/src/test/org/apache/lucene/index/TestDocValuesTypeCompatibility.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestDocValuesTypeCompatibility.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestDocValuesTypeCompatibility.java	(working copy)
@@ -42,8 +42,7 @@
  */
 public class TestDocValuesTypeCompatibility extends LuceneTestCase {
   
-  public void testAddCompatibleIntTypes() throws CorruptIndexException,
-      LockObtainFailedException, IOException {
+  public void testAddCompatibleIntTypes() throws IOException {
     int numIter = atLeast(10);
     for (int i = 0; i < numIter; i++) {
       Directory dir = newDirectory();
@@ -97,8 +96,7 @@
     }
   }
   
-  public void testAddCompatibleDoubleTypes() throws CorruptIndexException,
-      LockObtainFailedException, IOException {
+  public void testAddCompatibleDoubleTypes() throws IOException {
     int numIter = atLeast(10);
     for (int i = 0; i < numIter; i++) {
       Directory dir = newDirectory();
@@ -151,8 +149,7 @@
     }
   }
   
-  public void testAddCompatibleDoubleTypes2() throws CorruptIndexException,
-      LockObtainFailedException, IOException {
+  public void testAddCompatibleDoubleTypes2() throws IOException {
     int numIter = atLeast(10);
     for (int i = 0; i < numIter; i++) {
       Directory dir = newDirectory();
@@ -183,8 +180,7 @@
     
   }
   
-  public void testAddCompatibleByteTypes() throws CorruptIndexException,
-      LockObtainFailedException, IOException {
+  public void testAddCompatibleByteTypes() throws IOException {
     int numIter = atLeast(10);
     for (int i = 0; i < numIter; i++) {
       Directory dir = newDirectory();
@@ -262,7 +258,7 @@
   }
   
   private void addDoc(IndexWriter writer, IndexableField... fields)
-      throws CorruptIndexException, IOException {
+      throws IOException {
     Document doc = new Document();
     for (IndexableField indexableField : fields) {
       doc.add(indexableField);
Index: lucene/core/src/test/org/apache/lucene/index/BinaryTokenStream.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/BinaryTokenStream.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/BinaryTokenStream.java	(working copy)
@@ -36,7 +36,7 @@
   }
   
   @Override
-  public boolean incrementToken() throws IOException {
+  public boolean incrementToken() {
     if (available) {
       available = false;
       return true;
@@ -45,7 +45,7 @@
   }
   
   @Override
-  public void reset() throws IOException {
+  public void reset() {
     available = true;
   }
   
Index: lucene/core/src/test/org/apache/lucene/index/TestPayloadProcessorProvider.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestPayloadProcessorProvider.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestPayloadProcessorProvider.java	(working copy)
@@ -50,7 +50,7 @@
     }
 
     @Override
-    public ReaderPayloadProcessor getReaderProcessor(AtomicReader reader) throws IOException {
+    public ReaderPayloadProcessor getReaderProcessor(AtomicReader reader) {
       if (reader instanceof SegmentReader) {
         return processors.get(((SegmentReader) reader).directory());
       } else {
@@ -63,7 +63,7 @@
   private static final class PerTermPayloadProcessor extends ReaderPayloadProcessor {
 
     @Override
-    public PayloadProcessor getProcessor(String field, BytesRef text) throws IOException {
+    public PayloadProcessor getProcessor(String field, BytesRef text) {
       // don't process payloads of terms other than "p:p1"
       if (!field.equals("p") || !text.bytesEquals(new BytesRef("p1"))) {
         return null;
@@ -79,7 +79,7 @@
   private static final class DeletePayloadProcessor extends PayloadProcessor {
 
     @Override
-    public void processPayload(BytesRef payload) throws IOException {
+    public void processPayload(BytesRef payload) {
       payload.length = 0;      
     }
 
@@ -98,7 +98,7 @@
     }
 
     @Override
-    public boolean incrementToken() throws IOException {
+    public boolean incrementToken() {
       if (called) {
         return false;
       }
Index: lucene/core/src/test/org/apache/lucene/index/TestIndexCommit.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestIndexCommit.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestIndexCommit.java	(working copy)
@@ -35,10 +35,10 @@
     IndexCommit ic1 = new IndexCommit() {
       @Override public String getSegmentsFileName() { return "a"; }
       @Override public Directory getDirectory() { return dir; }
-      @Override public Collection<String> getFileNames() throws IOException { return null; }
+      @Override public Collection<String> getFileNames() { return null; }
       @Override public void delete() {}
       @Override public long getGeneration() { return 0; }
-      @Override public Map<String, String> getUserData() throws IOException { return null; }
+      @Override public Map<String, String> getUserData() { return null; }
       @Override public boolean isDeleted() { return false; }
       @Override public int getSegmentCount() { return 2; }
     };
@@ -46,10 +46,10 @@
     IndexCommit ic2 = new IndexCommit() {
       @Override public String getSegmentsFileName() { return "b"; }
       @Override public Directory getDirectory() { return dir; }
-      @Override public Collection<String> getFileNames() throws IOException { return null; }
+      @Override public Collection<String> getFileNames() { return null; }
       @Override public void delete() {}
       @Override public long getGeneration() { return 0; }
-      @Override public Map<String, String> getUserData() throws IOException { return null; }
+      @Override public Map<String, String> getUserData() { return null; }
       @Override public boolean isDeleted() { return false; }
       @Override public int getSegmentCount() { return 2; }
     };
Index: lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java	(working copy)
@@ -1003,7 +1003,7 @@
     dir.close();
   }
   
-  public void testTryIncRef() throws CorruptIndexException, LockObtainFailedException, IOException {
+  public void testTryIncRef() throws IOException {
     Directory dir = newDirectory();
     IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())));
     writer.addDocument(new Document());
@@ -1017,7 +1017,7 @@
     dir.close();
   }
   
-  public void testStressTryIncRef() throws CorruptIndexException, LockObtainFailedException, IOException, InterruptedException {
+  public void testStressTryIncRef() throws IOException, InterruptedException {
     Directory dir = newDirectory();
     IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())));
     writer.addDocument(new Document());
Index: lucene/core/src/test/org/apache/lucene/index/TestFilterAtomicReader.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestFilterAtomicReader.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestFilterAtomicReader.java	(working copy)
@@ -175,7 +175,7 @@
     target.close();
   }
   
-  private void checkOverrideMethods(Class<?> clazz) throws Exception {
+  private void checkOverrideMethods(Class<?> clazz) {
     boolean fail = false;
     for (Method m : clazz.getMethods()) {
       int mods = m.getModifiers();
Index: lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java	(working copy)
@@ -62,7 +62,7 @@
   /*
    * Simple test case to show how to use the API
    */
-  public void testDocValuesSimple() throws CorruptIndexException, IOException {
+  public void testDocValuesSimple() throws IOException {
     Directory dir = newDirectory();
     IndexWriter writer = new IndexWriter(dir, writerConfig(false));
     for (int i = 0; i < 5; i++) {
@@ -357,7 +357,7 @@
   }
   
   public void runTestIndexBytes(IndexWriterConfig cfg, boolean withDeletions)
-      throws CorruptIndexException, LockObtainFailedException, IOException {
+      throws IOException {
     final Directory d = newDirectory();
     IndexWriter w = new IndexWriter(d, cfg);
     final List<Type> byteVariantList = new ArrayList<Type>(BYTES);
@@ -443,7 +443,7 @@
     d.close();
   }
   
-  public void testGetArrayNumerics() throws CorruptIndexException, IOException {
+  public void testGetArrayNumerics() throws IOException {
     Directory d = newDirectory();
     IndexWriterConfig cfg = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
     IndexWriter w = new IndexWriter(d, cfg);
@@ -525,7 +525,7 @@
     d.close();
   }
   
-  public void testGetArrayBytes() throws CorruptIndexException, IOException {
+  public void testGetArrayBytes() throws IOException {
     Directory d = newDirectory();
     IndexWriterConfig cfg = newIndexWriterConfig(TEST_VERSION_CURRENT,
         new MockAnalyzer(random()));
@@ -596,7 +596,7 @@
 
   private FixedBitSet indexValues(IndexWriter w, int numValues, Type valueType,
       List<Type> valueVarList, boolean withDeletions, int bytesSize)
-      throws CorruptIndexException, IOException {
+      throws IOException {
     final boolean isNumeric = NUMERICS.contains(valueType);
     FixedBitSet deleted = new FixedBitSet(numValues);
     Document doc = new Document();
Index: lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java	(working copy)
@@ -258,7 +258,7 @@
 
     @Override
     public MergeSpecification findMerges(SegmentInfos segmentInfos)
-        throws CorruptIndexException, IOException {
+        throws IOException {
       MergeSpecification ms = new MergeSpecification();
       if (doMerge) {
         OneMerge om = new OneMerge(segmentInfos.asList().subList(start, start + length));
@@ -272,13 +272,13 @@
     @Override
     public MergeSpecification findForcedMerges(SegmentInfos segmentInfos,
         int maxSegmentCount, Map<SegmentInfoPerCommit,Boolean> segmentsToMerge)
-        throws CorruptIndexException, IOException {
+        throws IOException {
       return null;
     }
 
     @Override
     public MergeSpecification findForcedDeletesMerges(
-        SegmentInfos segmentInfos) throws CorruptIndexException, IOException {
+        SegmentInfos segmentInfos) throws IOException {
       return null;
     }
 
Index: lucene/core/src/test/org/apache/lucene/index/TestCodecs.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestCodecs.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestCodecs.java	(working copy)
@@ -76,7 +76,7 @@
   private final static int TERM_DOC_FREQ_RAND = 20;
 
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     NUM_TEST_ITER = atLeast(20);
   }
 
Index: lucene/core/src/test/org/apache/lucene/index/TestIndexWriterNRTIsCurrent.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestIndexWriterNRTIsCurrent.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestIndexWriterNRTIsCurrent.java	(working copy)
@@ -36,8 +36,8 @@
     volatile boolean stop = false;
   }
 
-  public void testIsCurrentWithThreads() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InterruptedException {
+  public void testIsCurrentWithThreads() throws
+      IOException, InterruptedException {
     Directory dir = newDirectory();
     IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT,
         new MockAnalyzer(random()));
Index: lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java	(working copy)
@@ -820,7 +820,7 @@
     }
 
     @Override
-    protected void doBeforeFlush() throws IOException {
+    protected void doBeforeFlush() {
       beforeWasCalled = true;
     }
   }
@@ -1527,7 +1527,7 @@
     }
 
     @Override
-    public final boolean incrementToken() throws IOException {
+    public final boolean incrementToken() {
       clearAttributes();      
       if (upto < tokens.length) {
         termAtt.setEmpty();
Index: lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java	(working copy)
@@ -983,7 +983,7 @@
         }
         
         @Override
-        public void close() throws IOException {}
+        public void close() {}
       }));
 
     try {
Index: lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java	(working copy)
@@ -312,7 +312,7 @@
   private class MyMergeScheduler extends MergeScheduler {
     @Override
     synchronized public void merge(IndexWriter writer)
-      throws CorruptIndexException, IOException {
+      throws IOException {
 
       while(true) {
         MergePolicy.OneMerge merge = writer.getNextMerge();
Index: lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java	(working copy)
@@ -44,7 +44,7 @@
 
 public class TestDeletionPolicy extends LuceneTestCase {
   
-  private void verifyCommitOrder(List<? extends IndexCommit> commits) throws IOException {
+  private void verifyCommitOrder(List<? extends IndexCommit> commits) {
     final IndexCommit firstCommit =  commits.get(0);
     long last = SegmentInfos.generationFromSegmentsFileName(firstCommit.getSegmentsFileName());
     assertEquals(last, firstCommit.getGeneration());
Index: lucene/core/src/test/org/apache/lucene/index/TestFlushByRamOrCountsPolicy.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestFlushByRamOrCountsPolicy.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestFlushByRamOrCountsPolicy.java	(working copy)
@@ -48,21 +48,19 @@
     lineDocFile = null;
   }
 
-  public void testFlushByRam() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InterruptedException {
+  public void testFlushByRam() throws IOException, InterruptedException {
     final double ramBuffer = (TEST_NIGHTLY ? 1 : 10) + atLeast(2)
         + random().nextDouble();
     runFlushByRam(1 + random().nextInt(TEST_NIGHTLY ? 5 : 1), ramBuffer, false);
   }
   
-  public void testFlushByRamLargeBuffer() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InterruptedException {
+  public void testFlushByRamLargeBuffer() throws IOException, InterruptedException {
     // with a 256 mb ram buffer we should never stall
     runFlushByRam(1 + random().nextInt(TEST_NIGHTLY ? 5 : 1), 256.d, true);
   }
 
   protected void runFlushByRam(int numThreads, double maxRamMB,
-      boolean ensureNotStalled) throws IOException, CorruptIndexException,
+      boolean ensureNotStalled) throws IOException,
       LockObtainFailedException, InterruptedException {
     final int numDocumentsToIndex = 10 + atLeast(30);
     AtomicInteger numDocs = new AtomicInteger(numDocumentsToIndex);
@@ -116,8 +114,7 @@
     dir.close();
   }
 
-  public void testFlushDocCount() throws CorruptIndexException,
-      LockObtainFailedException, IOException, InterruptedException {
+  public void testFlushDocCount() throws IOException, InterruptedException {
     int[] numThreads = new int[] { 2 + atLeast(1), 1 };
     for (int i = 0; i < numThreads.length; i++) {
 
@@ -230,8 +227,7 @@
     dir.close();
   }
 
-  public void testStallControl() throws InterruptedException,
-      CorruptIndexException, LockObtainFailedException, IOException {
+  public void testStallControl() throws InterruptedException, IOException {
 
     int[] numThreads = new int[] { 4 + random().nextInt(8), 1 };
     final int numDocumentsToIndex = 50 + random().nextInt(50);
Index: lucene/core/src/test/org/apache/lucene/index/Test2BPostings.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/Test2BPostings.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/Test2BPostings.java	(working copy)
@@ -94,7 +94,7 @@
     }
     
     @Override
-    public boolean incrementToken() throws IOException {
+    public boolean incrementToken() {
       if (index <= 'z') {
         buffer[0] = (char) index++;
         return true;
@@ -103,7 +103,7 @@
     }
     
     @Override
-    public void reset() throws IOException {
+    public void reset() {
       index = 'a';
     }
   }
Index: lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java	(working copy)
@@ -226,7 +226,7 @@
       private CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
       
       @Override
-      public boolean incrementToken() throws IOException {
+      public boolean incrementToken() {
         if (index == tokens.length) {
           return false;
         } else {
Index: lucene/core/src/test/org/apache/lucene/index/TestSameTokenSamePosition.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestSameTokenSamePosition.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestSameTokenSamePosition.java	(working copy)
@@ -72,7 +72,7 @@
   private final int incs[] = new int[]{1, 0, 1, 0};
 
   @Override
-  public boolean incrementToken() throws IOException {
+  public boolean incrementToken() {
     if (nextTokenIndex < tokenCount) {
       termAtt.setEmpty().append(terms[nextTokenIndex]);
       offsetAtt.setOffset(starts[nextTokenIndex], ends[nextTokenIndex]);
Index: lucene/core/src/test/org/apache/lucene/index/TestNorms.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestNorms.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestNorms.java	(working copy)
@@ -175,8 +175,7 @@
     otherDir.close();
   }
 
-  public void buildIndex(Directory dir, boolean writeNorms) throws IOException,
-      CorruptIndexException {
+  public void buildIndex(Directory dir, boolean writeNorms) throws IOException {
     Random random = random();
     IndexWriterConfig config = newIndexWriterConfig(TEST_VERSION_CURRENT,
         new MockAnalyzer(random()));
Index: lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java	(working copy)
@@ -227,7 +227,7 @@
     writer.addDocument(doc);
   }
 
-  private void checkInvariants(IndexWriter writer) throws IOException {
+  private void checkInvariants(IndexWriter writer) {
     writer.waitForMerges();
     int maxBufferedDocs = writer.getConfig().getMaxBufferedDocs();
     int mergeFactor = ((LogMergePolicy) writer.getConfig().getMergePolicy()).getMergeFactor();
Index: lucene/core/src/test/org/apache/lucene/index/TestSizeBoundedForceMerge.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestSizeBoundedForceMerge.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestSizeBoundedForceMerge.java	(working copy)
@@ -43,7 +43,7 @@
     writer.commit();
   }
   
-  private static IndexWriterConfig newWriterConfig() throws IOException {
+  private static IndexWriterConfig newWriterConfig() {
     IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, null);
     conf.setMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
     conf.setRAMBufferSizeMB(IndexWriterConfig.DEFAULT_RAM_BUFFER_SIZE_MB);
Index: lucene/core/src/test/org/apache/lucene/index/TestTypePromotion.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestTypePromotion.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestTypePromotion.java	(working copy)
@@ -68,8 +68,7 @@
     Int, Float, Byte
   }
 
-  private void runTest(EnumSet<Type> types, TestType type)
-      throws CorruptIndexException, IOException {
+  private void runTest(EnumSet<Type> types, TestType type) throws IOException {
     Directory dir = newDirectory();
     IndexWriter writer = new IndexWriter(dir,
         newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())));
@@ -119,7 +118,7 @@
 
   
   private void assertValues(TestType type, Directory dir, long[] values, Type[] sourceType)
-      throws CorruptIndexException, IOException {
+      throws IOException {
     DirectoryReader reader = DirectoryReader.open(dir);
     assertEquals(1, reader.getSequentialSubReaders().size());
     IndexReaderContext topReaderContext = reader.getTopReaderContext();
@@ -181,7 +180,7 @@
 
   public void index(IndexWriter writer,
       Type valueType, long[] values, Type[] sourceTypes, int offset, int num)
-      throws CorruptIndexException, IOException {
+      throws IOException {
     final Field valField;
 
     if (VERBOSE) {
@@ -322,8 +321,7 @@
     runTest(INTEGERS, TestType.Int);
   }
 
-  public void testPromotFloatingPoint() throws CorruptIndexException,
-      IOException {
+  public void testPromotFloatingPoint() throws IOException {
     runTest(FLOATS, TestType.Float);
   }
   
Index: lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java	(revision 1354855)
+++ lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java	(working copy)
@@ -115,7 +115,7 @@
 
     Directory fsDir;
     
-    public FaultyFSDirectory(File dir) throws IOException {
+    public FaultyFSDirectory(File dir) {
       fsDir = newFSDirectory(dir);
       lockFactory = fsDir.getLockFactory();
     }
Index: lucene/core/src/java/org/apache/lucene/codecs/intblock/FixedIntBlockIndexInput.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/intblock/FixedIntBlockIndexInput.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/intblock/FixedIntBlockIndexInput.java	(working copy)
@@ -89,8 +89,7 @@
     private final int blockSize;
     private final IntsRef bulkResult = new IntsRef();
 
-    public Reader(final IndexInput in, final int[] pending, final BlockReader blockReader)
-    throws IOException {
+    public Reader(final IndexInput in, final int[] pending, final BlockReader blockReader) {
       this.in = in;
       this.pending = pending;
       this.blockSize = pending.length;
Index: lucene/core/src/java/org/apache/lucene/codecs/intblock/VariableIntBlockIndexInput.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/intblock/VariableIntBlockIndexInput.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/intblock/VariableIntBlockIndexInput.java	(working copy)
@@ -92,15 +92,14 @@
     private final BlockReader blockReader;
     private final IntsRef bulkResult = new IntsRef();
 
-    public Reader(final IndexInput in, final int[] pending, final BlockReader blockReader)
-      throws IOException {
+    public Reader(final IndexInput in, final int[] pending, final BlockReader blockReader) {
       this.in = in;
       this.pending = pending;
       bulkResult.ints = pending;
       this.blockReader = blockReader;
     }
 
-    void seek(final long fp, final int upto) throws IOException {
+    void seek(final long fp, final int upto) {
       // TODO: should we do this in real-time, not lazy?
       pendingFP = fp;
       pendingUpto = upto;
Index: lucene/core/src/java/org/apache/lucene/codecs/BlockTermsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/BlockTermsReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/BlockTermsReader.java	(working copy)
@@ -713,7 +713,7 @@
       }
 
       @Override
-      public void seekExact(BytesRef target, TermState otherState) throws IOException {
+      public void seekExact(BytesRef target, TermState otherState) {
         //System.out.println("BTR.seekExact termState target=" + target.utf8ToString() + " " + target + " this=" + this);
         assert otherState != null && otherState instanceof BlockTermState;
         assert !doOrd || ((BlockTermState) otherState).ord < numTerms;
Index: lucene/core/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java	(working copy)
@@ -427,7 +427,7 @@
     }
 
     @Override
-    public int freq() throws IOException {
+    public int freq() {
       assert indexOptions != IndexOptions.DOCS_ONLY;
       return freq;
     }
@@ -627,7 +627,7 @@
     }
 
     @Override
-    public int freq() throws IOException {
+    public int freq() {
       return freq;
     }
   }
@@ -647,7 +647,7 @@
       fstEnum = new BytesRefFSTEnum<BytesRef>(fst);
     }
 
-    private void decodeMetaData() throws IOException {
+    private void decodeMetaData() {
       if (!didDecode) {
         buffer.reset(current.output.bytes, 0, current.output.length);
         docFreq = buffer.readVInt();
@@ -696,7 +696,7 @@
     }
     
     @Override
-    public DocsEnum docs(Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
+    public DocsEnum docs(Bits liveDocs, DocsEnum reuse, boolean needsFreqs) {
       decodeMetaData();
       FSTDocsEnum docsEnum;
 
@@ -714,7 +714,7 @@
     }
 
     @Override
-    public DocsAndPositionsEnum docsAndPositions(Bits liveDocs, DocsAndPositionsEnum reuse, boolean needsOffsets) throws IOException {
+    public DocsAndPositionsEnum docsAndPositions(Bits liveDocs, DocsAndPositionsEnum reuse, boolean needsOffsets) {
 
       boolean hasOffsets = field.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0;
       if (needsOffsets && !hasOffsets) {
@@ -757,13 +757,13 @@
     }
 
     @Override
-    public int docFreq() throws IOException {
+    public int docFreq() {
       decodeMetaData();
       return docFreq;
     }
 
     @Override
-    public long totalTermFreq() throws IOException {
+    public long totalTermFreq() {
       decodeMetaData();
       return totalTermFreq;
     }
@@ -817,17 +817,17 @@
     }
 
     @Override
-    public long getSumDocFreq() throws IOException {
+    public long getSumDocFreq() {
       return sumDocFreq;
     }
 
     @Override
-    public int getDocCount() throws IOException {
+    public int getDocCount() {
       return docCount;
     }
 
     @Override
-    public long size() throws IOException {
+    public long size() {
       return termCount;
     }
 
Index: lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java	(working copy)
@@ -42,7 +42,7 @@
   int doc = -1;
   private MergeState mergeState;
 
-  MappingMultiDocsAndPositionsEnum reset(MultiDocsAndPositionsEnum postingsEnum) throws IOException {
+  MappingMultiDocsAndPositionsEnum reset(MultiDocsAndPositionsEnum postingsEnum) {
     this.numSubs = postingsEnum.getNumSubs();
     this.subs = postingsEnum.getSubs();
     upto = -1;
@@ -73,7 +73,7 @@
   }
 
   @Override
-  public int advance(int target) throws IOException {
+  public int advance(int target) {
     throw new UnsupportedOperationException();
   }
 
Index: lucene/core/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsWriter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsWriter.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsWriter.java	(working copy)
@@ -92,7 +92,7 @@
   /** If the total number of positions (summed across all docs
    *  for this term) is <= maxPositions, then the postings are
    *  inlined into terms dict */
-  public PulsingPostingsWriter(int maxPositions, PostingsWriterBase wrappedPostingsWriter) throws IOException {
+  public PulsingPostingsWriter(int maxPositions, PostingsWriterBase wrappedPostingsWriter) {
     pending = new Position[maxPositions];
     for(int i=0;i<maxPositions;i++) {
       pending[i] = new Position();
Index: lucene/core/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsReader.java	(working copy)
@@ -52,7 +52,7 @@
   final PostingsReaderBase wrappedPostingsReader;
   int maxPositions;
 
-  public PulsingPostingsReader(PostingsReaderBase wrappedPostingsReader) throws IOException {
+  public PulsingPostingsReader(PostingsReaderBase wrappedPostingsReader) {
     this.wrappedPostingsReader = wrappedPostingsReader;
   }
 
Index: lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsEnum.java	(working copy)
@@ -41,7 +41,7 @@
   int doc = -1;
   private MergeState mergeState;
 
-  MappingMultiDocsEnum reset(MultiDocsEnum docsEnum) throws IOException {
+  MappingMultiDocsEnum reset(MultiDocsEnum docsEnum) {
     this.numSubs = docsEnum.getNumSubs();
     this.subs = docsEnum.getSubs();
     upto = -1;
@@ -72,7 +72,7 @@
   }
 
   @Override
-  public int advance(int target) throws IOException {
+  public int advance(int target) {
     throw new UnsupportedOperationException();
   }
 
Index: lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldPostingsFormat.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldPostingsFormat.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldPostingsFormat.java	(working copy)
@@ -85,7 +85,7 @@
     
     private final SegmentWriteState segmentWriteState;
 
-    public FieldsWriter(SegmentWriteState state) throws IOException {
+    public FieldsWriter(SegmentWriteState state) {
       segmentWriteState = state;
     }
 
@@ -206,7 +206,7 @@
       }
 
       @Override
-      public String next() throws IOException {
+      public String next() {
         if (it.hasNext()) {
           current = it.next();
         } else {
Index: lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsReader.java	(working copy)
@@ -19,7 +19,6 @@
 import java.io.Closeable;
 import java.io.IOException;
 
-import org.apache.lucene.index.CorruptIndexException;
 import org.apache.lucene.index.StoredFieldVisitor;
 
 /**
@@ -33,7 +32,7 @@
 public abstract class StoredFieldsReader implements Cloneable, Closeable {
   
   /** Visit the stored fields for document <code>n</code> */
-  public abstract void visitDocument(int n, StoredFieldVisitor visitor) throws CorruptIndexException, IOException;
+  public abstract void visitDocument(int n, StoredFieldVisitor visitor) throws IOException;
 
   public abstract StoredFieldsReader clone();
 }
Index: lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java	(working copy)
@@ -251,7 +251,7 @@
     }
     
     @Override
-    public void close() throws IOException {
+    public void close() {
       data = null;
     }
 
@@ -266,18 +266,18 @@
     }
 
     @Override
-    public byte readByte() throws IOException {
+    public byte readByte() {
       return data[pos++];
     }
 
     @Override
-    public void readBytes(byte[] b, int offset, int len) throws IOException {
+    public void readBytes(byte[] b, int offset, int len) {
       System.arraycopy(data, pos, b, offset, len);
       pos += len;
     }
 
     @Override
-    public void seek(long pos) throws IOException {
+    public void seek(long pos) {
       this.pos =  (int) (pos - pointer);
     }
     
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsReader.java	(working copy)
@@ -96,7 +96,7 @@
   }
     
   public Lucene40TermVectorsReader(Directory d, SegmentInfo si, FieldInfos fieldInfos, IOContext context)
-    throws CorruptIndexException, IOException {
+    throws IOException {
     final String segment = si.name;
     final int size = si.getDocCount();
     
@@ -252,7 +252,7 @@
         private int fieldUpto;
 
         @Override
-        public String next() throws IOException {
+        public String next() {
           if (fieldNumbers != null && fieldUpto < fieldNumbers.length) {
             return fieldInfos.fieldInfo(fieldNumbers[fieldUpto++]).name;
           } else {
@@ -365,7 +365,7 @@
     private int[] endOffsets;
 
     // NOTE: tvf is pre-positioned by caller
-    public TVTermsEnum() throws IOException {
+    public TVTermsEnum() {
       this.origTVF = Lucene40TermVectorsReader.this.tvf;
       tvf = (IndexInput) origTVF.clone();
     }
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesConsumer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesConsumer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesConsumer.java	(working copy)
@@ -39,7 +39,7 @@
   public final static String DOC_VALUES_SEGMENT_SUFFIX = "dv";
 
 
-  public Lucene40DocValuesConsumer(PerDocWriteState state, String segmentSuffix) throws IOException {
+  public Lucene40DocValuesConsumer(PerDocWriteState state, String segmentSuffix) {
     super(state);
     this.segmentSuffix = segmentSuffix;
     mainDirectory = state.directory;
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40NormsFormat.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40NormsFormat.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40NormsFormat.java	(working copy)
@@ -96,7 +96,7 @@
   public static class Lucene40NormsDocValuesConsumer extends Lucene40DocValuesConsumer {
 
     public Lucene40NormsDocValuesConsumer(PerDocWriteState state,
-        String segmentSuffix) throws IOException {
+        String segmentSuffix) {
       super(state, segmentSuffix);
     }
 
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsReader.java	(working copy)
@@ -136,7 +136,7 @@
     indexStream.seek(HEADER_LENGTH_IDX + docID * 8L);
   }
 
-  public final void visitDocument(int n, StoredFieldVisitor visitor) throws CorruptIndexException, IOException {
+  public final void visitDocument(int n, StoredFieldVisitor visitor) throws IOException {
     seekIndex(n);
     fieldsStream.seek(indexStream.readLong());
 
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsWriter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsWriter.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsWriter.java	(working copy)
@@ -284,7 +284,7 @@
                                         final MergeState.IndexReaderAndLiveDocs reader,
                                         int rawDocLengths[],
                                         int rawDocLengths2[])
-          throws IOException, MergeAbortedException {
+          throws IOException {
     final int maxDoc = reader.reader.maxDoc();
     final Bits liveDocs = reader.liveDocs;
     int totalNumDocs = 0;
@@ -337,7 +337,7 @@
                                       final MergeState.IndexReaderAndLiveDocs reader,
                                       int rawDocLengths[],
                                       int rawDocLengths2[])
-          throws IOException, MergeAbortedException {
+          throws IOException {
     final int maxDoc = reader.reader.maxDoc();
     if (matchingVectorsReader != null) {
       // We can bulk-copy because the fieldInfos are "congruent"
@@ -362,7 +362,7 @@
   }
   
   @Override
-  public void finish(FieldInfos fis, int numDocs) throws IOException {
+  public void finish(FieldInfos fis, int numDocs) {
     if (HEADER_LENGTH_INDEX+((long) numDocs)*16 != tvx.getFilePointer())
       // This is most likely a bug in Sun JRE 1.6.0_04/_05;
       // we detect that the bug has struck, here, and
@@ -382,7 +382,7 @@
   }
 
   @Override
-  public Comparator<BytesRef> getComparator() throws IOException {
+  public Comparator<BytesRef> getComparator() {
     return BytesRef.getUTF8SortedAsUnicodeComparator();
   }
 }
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/DirectSource.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/DirectSource.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/DirectSource.java	(working copy)
@@ -126,7 +126,7 @@
   
   private static final class BytesToFloat extends ToNumeric {
     @Override
-    long toLong(IndexInput input) throws IOException {
+    long toLong(IndexInput input) {
       throw new UnsupportedOperationException("ints are not supported");
     }
 
@@ -137,7 +137,7 @@
   
   private static final class BytesToDouble extends ToNumeric {
     @Override
-    long toLong(IndexInput input) throws IOException {
+    long toLong(IndexInput input) {
       throw new UnsupportedOperationException("ints are not supported");
     }
 
@@ -153,7 +153,7 @@
       return input.readLong();
     }
 
-    double toDouble(IndexInput input) throws IOException {
+    double toDouble(IndexInput input) {
       throw new UnsupportedOperationException("doubles are not supported");
     }
   }
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Writer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Writer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Writer.java	(working copy)
@@ -87,7 +87,7 @@
    * @see PackedInts#getReader(org.apache.lucene.store.DataInput, float)
    */
   public static DocValuesConsumer create(Type type, String id, Directory directory,
-      Comparator<BytesRef> comp, Counter bytesUsed, IOContext context, float acceptableOverheadRatio) throws IOException {
+      Comparator<BytesRef> comp, Counter bytesUsed, IOContext context, float acceptableOverheadRatio) {
     if (comp == null) {
       comp = BytesRef.getUTF8SortedAsUnicodeComparator();
     }
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Ints.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Ints.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Ints.java	(working copy)
@@ -46,7 +46,7 @@
   }
   
   public static DocValuesConsumer getWriter(Directory dir, String id, Counter bytesUsed,
-      Type type, IOContext context) throws IOException {
+      Type type, IOContext context) {
     return type == Type.VAR_INTS ? new PackedIntValues.PackedIntsWriter(dir, id,
         bytesUsed, context) : new IntsWriter(dir, id, bytesUsed, context, type);
   }
@@ -92,12 +92,12 @@
     private final DocValuesArraySource template;
 
     public IntsWriter(Directory dir, String id, Counter bytesUsed,
-        IOContext context, Type valueType) throws IOException {
+        IOContext context, Type valueType) {
       this(dir, id, CODEC_NAME, VERSION_CURRENT, bytesUsed, context, valueType);
     }
 
     protected IntsWriter(Directory dir, String id, String codecName,
-        int version, Counter bytesUsed, IOContext context, Type valueType) throws IOException {
+        int version, Counter bytesUsed, IOContext context, Type valueType) {
       super(dir, id, codecName, version, bytesUsed, context);
       size = typeToSize(valueType);
       this.bytesRef = new BytesRef(size);
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/FixedDerefBytesImpl.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/FixedDerefBytesImpl.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/FixedDerefBytesImpl.java	(working copy)
@@ -46,8 +46,7 @@
   static final int VERSION_CURRENT = VERSION_START;
 
   public static class Writer extends DerefBytesWriterBase {
-    public Writer(Directory dir, String id, Counter bytesUsed, IOContext context)
-        throws IOException {
+    public Writer(Directory dir, String id, Counter bytesUsed, IOContext context) {
       super(dir, id, CODEC_NAME_IDX, CODEC_NAME_DAT, VERSION_CURRENT, bytesUsed, context, Type.BYTES_FIXED_DEREF);
     }
 
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/FixedStraightBytesImpl.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/FixedStraightBytesImpl.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/FixedStraightBytesImpl.java	(working copy)
@@ -62,12 +62,12 @@
     private final ByteBlockPool pool;
 
     protected FixedBytesWriterBase(Directory dir, String id, String codecNameDat,
-        int version, Counter bytesUsed, IOContext context) throws IOException {
+        int version, Counter bytesUsed, IOContext context) {
      this(dir, id, codecNameDat, version, bytesUsed, context, Type.BYTES_FIXED_STRAIGHT);
     }
     
     protected FixedBytesWriterBase(Directory dir, String id, String codecNameDat,
-        int version, Counter bytesUsed, IOContext context, Type type) throws IOException {
+        int version, Counter bytesUsed, IOContext context, Type type) {
       super(dir, id, null, codecNameDat, version, bytesUsed, context, type);
       pool = new ByteBlockPool(new DirectTrackingAllocator(bytesUsed));
       pool.nextBuffer();
@@ -140,11 +140,11 @@
     private boolean hasMerged;
     private IndexOutput datOut;
     
-    public Writer(Directory dir, String id, Counter bytesUsed, IOContext context) throws IOException {
+    public Writer(Directory dir, String id, Counter bytesUsed, IOContext context) {
       super(dir, id, CODEC_NAME, VERSION_CURRENT, bytesUsed, context);
     }
 
-    public Writer(Directory dir, String id, String codecNameDat, int version, Counter bytesUsed, IOContext context) throws IOException {
+    public Writer(Directory dir, String id, String codecNameDat, int version, Counter bytesUsed, IOContext context) {
       super(dir, id, codecNameDat, version, bytesUsed, context);
     }
 
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/PackedIntValues.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/PackedIntValues.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/PackedIntValues.java	(working copy)
@@ -57,7 +57,7 @@
     private int lastDocId = -1;
 
     protected PackedIntsWriter(Directory dir, String id, Counter bytesUsed,
-        IOContext context) throws IOException {
+        IOContext context) {
       super(dir, id, CODEC_NAME, VERSION_CURRENT, bytesUsed, context, Type.VAR_INTS);
       bytesRef = new BytesRef(8);
     }
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/VarSortedBytesImpl.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/VarSortedBytesImpl.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/VarSortedBytesImpl.java	(working copy)
@@ -60,7 +60,7 @@
     private final Comparator<BytesRef> comp;
 
     public Writer(Directory dir, String id, Comparator<BytesRef> comp,
-        Counter bytesUsed, IOContext context, float acceptableOverheadRatio) throws IOException {
+        Counter bytesUsed, IOContext context, float acceptableOverheadRatio) {
       super(dir, id, CODEC_NAME_IDX, CODEC_NAME_DAT, VERSION_CURRENT, bytesUsed, context, acceptableOverheadRatio, Type.BYTES_VAR_SORTED);
       this.comp = comp;
       size = 0;
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Bytes.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Bytes.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Bytes.java	(working copy)
@@ -127,8 +127,7 @@
    */
   public static DocValuesConsumer getWriter(Directory dir, String id, Mode mode,
       boolean fixedSize, Comparator<BytesRef> sortComparator,
-      Counter bytesUsed, IOContext context, float acceptableOverheadRatio)
-      throws IOException {
+      Counter bytesUsed, IOContext context, float acceptableOverheadRatio) {
     // TODO -- i shouldn't have to specify fixed? can
     // track itself & do the write thing at write time?
     if (sortComparator == null) {
@@ -244,7 +243,7 @@
     private final IOContext context;
 
     protected BytesWriterBase(Directory dir, String id, String codecNameIdx, String codecNameDat,
-        int version, Counter bytesUsed, IOContext context, Type type) throws IOException {
+        int version, Counter bytesUsed, IOContext context, Type type) {
       super(bytesUsed, type);
       this.id = id;
       this.dir = dir;
@@ -388,21 +387,19 @@
     protected long maxBytes = 0;
     
     protected DerefBytesWriterBase(Directory dir, String id, String codecNameIdx, String codecNameDat,
-        int codecVersion, Counter bytesUsed, IOContext context, Type type)
-        throws IOException {
+        int codecVersion, Counter bytesUsed, IOContext context, Type type) {
       this(dir, id, codecNameIdx, codecNameDat, codecVersion, new DirectTrackingAllocator(
           ByteBlockPool.BYTE_BLOCK_SIZE, bytesUsed), bytesUsed, context, PackedInts.DEFAULT, type);
     }
 
     protected DerefBytesWriterBase(Directory dir, String id, String codecNameIdx, String codecNameDat,
-                                   int codecVersion, Counter bytesUsed, IOContext context, float acceptableOverheadRatio, Type type)
-        throws IOException {
+                                   int codecVersion, Counter bytesUsed, IOContext context, float acceptableOverheadRatio, Type type) {
       this(dir, id, codecNameIdx, codecNameDat, codecVersion, new DirectTrackingAllocator(
           ByteBlockPool.BYTE_BLOCK_SIZE, bytesUsed), bytesUsed, context, acceptableOverheadRatio, type);
     }
 
     protected DerefBytesWriterBase(Directory dir, String id, String codecNameIdx, String codecNameDat, int codecVersion, Allocator allocator,
-        Counter bytesUsed, IOContext context, float acceptableOverheadRatio, Type type) throws IOException {
+        Counter bytesUsed, IOContext context, float acceptableOverheadRatio, Type type) {
       super(dir, id, codecNameIdx, codecNameDat, codecVersion, bytesUsed, context, type);
       hash = new BytesRefHash(new ByteBlockPool(allocator),
           BytesRefHash.DEFAULT_CAPACITY, new TrackingDirectBytesStartArray(
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/VarDerefBytesImpl.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/VarDerefBytesImpl.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/VarDerefBytesImpl.java	(working copy)
@@ -57,8 +57,7 @@
    * order and merge them in a streamed fashion. 
    */
   static class Writer extends DerefBytesWriterBase {
-    public Writer(Directory dir, String id, Counter bytesUsed, IOContext context)
-        throws IOException {
+    public Writer(Directory dir, String id, Counter bytesUsed, IOContext context) {
       super(dir, id, CODEC_NAME_IDX, CODEC_NAME_DAT, VERSION_CURRENT, bytesUsed, context, Type.BYTES_VAR_DEREF);
       size = 0;
     }
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/VarStraightBytesImpl.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/VarStraightBytesImpl.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/VarStraightBytesImpl.java	(working copy)
@@ -64,8 +64,7 @@
     private final ByteBlockPool pool;
     private IndexOutput datOut;
     private boolean merge = false;
-    public Writer(Directory dir, String id, Counter bytesUsed, IOContext context)
-        throws IOException {
+    public Writer(Directory dir, String id, Counter bytesUsed, IOContext context) {
       super(dir, id, CODEC_NAME_IDX, CODEC_NAME_DAT, VERSION_CURRENT, bytesUsed, context, Type.BYTES_VAR_STRAIGHT);
       pool = new ByteBlockPool(new DirectTrackingAllocator(bytesUsed));
       docToAddress = new long[1];
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Floats.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Floats.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/Floats.java	(working copy)
@@ -47,7 +47,7 @@
   protected static final int VERSION_CURRENT = VERSION_START;
   
   public static DocValuesConsumer getWriter(Directory dir, String id, Counter bytesUsed,
-      IOContext context, Type type) throws IOException {
+      IOContext context, Type type) {
     return new FloatsWriter(dir, id, bytesUsed, context, type);
   }
 
@@ -72,7 +72,7 @@
     private final int size; 
     private final DocValuesArraySource template;
     public FloatsWriter(Directory dir, String id, Counter bytesUsed,
-        IOContext context, Type type) throws IOException {
+        IOContext context, Type type) {
       super(dir, id, CODEC_NAME, VERSION_CURRENT, bytesUsed, context);
       size = typeToSize(type);
       this.bytesRef = new BytesRef(size);
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/FixedSortedBytesImpl.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/FixedSortedBytesImpl.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/values/FixedSortedBytesImpl.java	(working copy)
@@ -58,7 +58,7 @@
     private final Comparator<BytesRef> comp;
 
     public Writer(Directory dir, String id, Comparator<BytesRef> comp,
-        Counter bytesUsed, IOContext context, float acceptableOverheadRatio) throws IOException {
+        Counter bytesUsed, IOContext context, float acceptableOverheadRatio) {
       super(dir, id, CODEC_NAME_IDX, CODEC_NAME_DAT, VERSION_CURRENT, bytesUsed, context, acceptableOverheadRatio, Type.BYTES_FIXED_SORTED);
       this.comp = comp;
     }
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsWriter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsWriter.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsWriter.java	(working copy)
@@ -209,7 +209,7 @@
   }
 
   @Override
-  public void finish(FieldInfos fis, int numDocs) throws IOException {
+  public void finish(FieldInfos fis, int numDocs) {
     if (HEADER_LENGTH_IDX+((long) numDocs)*8 != indexStream.getFilePointer())
       // This is most likely a bug in Sun JRE 1.6.0_04/_05;
       // we detect that the bug has struck, here, and
@@ -255,7 +255,7 @@
 
   private int copyFieldsWithDeletions(MergeState mergeState, final MergeState.IndexReaderAndLiveDocs reader,
                                       final Lucene40StoredFieldsReader matchingFieldsReader, int rawDocLengths[])
-    throws IOException, MergeAbortedException, CorruptIndexException {
+    throws IOException {
     int docCount = 0;
     final int maxDoc = reader.reader.maxDoc();
     final Bits liveDocs = reader.liveDocs;
@@ -309,7 +309,7 @@
 
   private int copyFieldsNoDeletions(MergeState mergeState, final MergeState.IndexReaderAndLiveDocs reader,
                                     final Lucene40StoredFieldsReader matchingFieldsReader, int rawDocLengths[])
-    throws IOException, MergeAbortedException, CorruptIndexException {
+    throws IOException {
     final int maxDoc = reader.reader.maxDoc();
     int docCount = 0;
     if (matchingFieldsReader != null) {
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40PostingsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40PostingsReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40PostingsReader.java	(working copy)
@@ -319,7 +319,7 @@
     protected boolean skipped;
     protected final Bits liveDocs;
     
-    SegmentDocsEnumBase(IndexInput startFreqIn, Bits liveDocs) throws IOException {
+    SegmentDocsEnumBase(IndexInput startFreqIn, Bits liveDocs) {
       this.startFreqIn = startFreqIn;
       this.freqIn = (IndexInput)startFreqIn.clone();
       this.liveDocs = liveDocs;
@@ -353,7 +353,7 @@
     }
     
     @Override
-    public final int freq() throws IOException {
+    public final int freq() {
       assert !indexOmitsTF;
       return freq;
     }
@@ -499,7 +499,7 @@
   
   private final class AllDocsSegmentDocsEnum extends SegmentDocsEnumBase {
 
-    AllDocsSegmentDocsEnum(IndexInput startFreqIn) throws IOException {
+    AllDocsSegmentDocsEnum(IndexInput startFreqIn) {
       super(startFreqIn, null);
       assert liveDocs == null;
     }
@@ -576,7 +576,7 @@
   
   private final class LiveDocsSegmentDocsEnum extends SegmentDocsEnumBase {
 
-    LiveDocsSegmentDocsEnum(IndexInput startFreqIn, Bits liveDocs) throws IOException {
+    LiveDocsSegmentDocsEnum(IndexInput startFreqIn, Bits liveDocs) {
       super(startFreqIn, liveDocs);
       assert liveDocs != null;
     }
@@ -696,7 +696,7 @@
     Lucene40SkipListReader skipper;
     private long lazyProxPointer;
 
-    public SegmentDocsAndPositionsEnum(IndexInput freqIn, IndexInput proxIn) throws IOException {
+    public SegmentDocsAndPositionsEnum(IndexInput freqIn, IndexInput proxIn) {
       startFreqIn = freqIn;
       this.freqIn = (IndexInput) freqIn.clone();
       this.proxIn = (IndexInput) proxIn.clone();
@@ -772,7 +772,7 @@
     }
 
     @Override
-    public int freq() throws IOException {
+    public int freq() {
       return freq;
     }
 
@@ -853,12 +853,12 @@
     }
 
     @Override
-    public int startOffset() throws IOException {
+    public int startOffset() {
       return -1;
     }
 
     @Override
-    public int endOffset() throws IOException {
+    public int endOffset() {
       return -1;
     }
 
@@ -909,7 +909,7 @@
     int offsetLength;
     int startOffset;
 
-    public SegmentFullPositionsEnum(IndexInput freqIn, IndexInput proxIn) throws IOException {
+    public SegmentFullPositionsEnum(IndexInput freqIn, IndexInput proxIn) {
       startFreqIn = freqIn;
       this.freqIn = (IndexInput) freqIn.clone();
       this.proxIn = (IndexInput) proxIn.clone();
Index: lucene/core/src/java/org/apache/lucene/codecs/sep/SepDocValuesConsumer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/sep/SepDocValuesConsumer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/sep/SepDocValuesConsumer.java	(working copy)
@@ -17,8 +17,6 @@
  * limitations under the License.
  */
 
-import java.io.IOException;
-
 import org.apache.lucene.codecs.lucene40.values.DocValuesWriterBase;
 import org.apache.lucene.index.PerDocWriteState;
 import org.apache.lucene.store.Directory;
@@ -31,7 +29,7 @@
 public class SepDocValuesConsumer extends DocValuesWriterBase {
   private final Directory directory;
 
-  public SepDocValuesConsumer(PerDocWriteState state) throws IOException {
+  public SepDocValuesConsumer(PerDocWriteState state) {
     super(state);
     this.directory = state.directory;
   }
Index: lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java	(working copy)
@@ -466,7 +466,7 @@
     }
 
     @Override
-    public int getDocCount() throws IOException {
+    public int getDocCount() {
       return docCount;
     }
 
@@ -863,7 +863,7 @@
       }
 
       @Override
-      public BytesRef term() throws IOException {
+      public BytesRef term() {
         return term;
       }
 
@@ -1156,22 +1156,22 @@
       }
 
       @Override
-      public boolean seekExact(BytesRef text, boolean useCache) throws IOException {
+      public boolean seekExact(BytesRef text, boolean useCache) {
         throw new UnsupportedOperationException();
       }
 
       @Override
-      public void seekExact(long ord) throws IOException {
+      public void seekExact(long ord) {
         throw new UnsupportedOperationException();
       }
 
       @Override
-      public long ord() throws IOException {
+      public long ord() {
         throw new UnsupportedOperationException();
       }
 
       @Override
-      public SeekStatus seekCeil(BytesRef text, boolean useCache) throws IOException {
+      public SeekStatus seekCeil(BytesRef text, boolean useCache) {
         throw new UnsupportedOperationException();
       }
     }
@@ -2144,7 +2144,7 @@
       }
 
       @Override
-      public void seekExact(BytesRef target, TermState otherState) throws IOException {
+      public void seekExact(BytesRef target, TermState otherState) {
         // if (DEBUG) {
         //   System.out.println("BTTR.seekExact termState seg=" + segment + " target=" + target.utf8ToString() + " " + target + " state=" + otherState);
         // }
@@ -2174,7 +2174,7 @@
       }
 
       @Override
-      public void seekExact(long ord) throws IOException {
+      public void seekExact(long ord) {
         throw new UnsupportedOperationException();
       }
 
@@ -2351,7 +2351,7 @@
           // }
         }
 
-        void rewind() throws IOException {
+        void rewind() {
 
           // Force reload:
           fp = fpOrig;
Index: lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsReader.java	(working copy)
@@ -88,7 +88,7 @@
   }
   
   @Override
-  public void visitDocument(int n, StoredFieldVisitor visitor) throws CorruptIndexException, IOException {
+  public void visitDocument(int n, StoredFieldVisitor visitor) throws IOException {
     in.seek(offsets.get(n));
     readLine();
     assert StringHelper.startsWith(scratch, NUM);
@@ -181,7 +181,7 @@
     SimpleTextUtil.readLine(in, scratch);
   }
   
-  private int parseIntAt(int offset) throws IOException {
+  private int parseIntAt(int offset) {
     UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+offset, scratch.length-offset, scratchUTF16);
     return ArrayUtil.parseInt(scratchUTF16.chars, 0, scratchUTF16.length);
   }
Index: lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java	(working copy)
@@ -99,7 +99,7 @@
     }
   }
   
-  private int parseIntAt(BytesRef bytes, int offset, CharsRef scratch) throws IOException {
+  private int parseIntAt(BytesRef bytes, int offset, CharsRef scratch) {
     UnicodeUtil.UTF8toUTF16(bytes.bytes, bytes.offset+offset, bytes.length-offset, scratch);
     return ArrayUtil.parseInt(scratch.chars, 0, scratch.length);
   }
Index: lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPerDocConsumer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPerDocConsumer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPerDocConsumer.java	(working copy)
@@ -32,8 +32,7 @@
 
   protected final PerDocWriteState state;
   protected final String segmentSuffix;
-  public SimpleTextPerDocConsumer(PerDocWriteState state, String segmentSuffix)
-      throws IOException {
+  public SimpleTextPerDocConsumer(PerDocWriteState state, String segmentSuffix) {
     this.state = state;
     this.segmentSuffix = segmentSuffix;
   }
Index: lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java	(working copy)
@@ -105,7 +105,7 @@
     private boolean ended;
     private final BytesRefFSTEnum<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>> fstEnum;
 
-    public SimpleTextTermsEnum(FST<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>> fst, IndexOptions indexOptions) throws IOException {
+    public SimpleTextTermsEnum(FST<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>> fst, IndexOptions indexOptions) {
       this.indexOptions = indexOptions;
       fstEnum = new BytesRefFSTEnum<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>>(fst);
     }
Index: lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java	(working copy)
@@ -204,7 +204,7 @@
     SimpleTextUtil.readLine(in, scratch);
   }
   
-  private int parseIntAt(int offset) throws IOException {
+  private int parseIntAt(int offset) {
     UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+offset, scratch.length-offset, scratchUTF16);
     return ArrayUtil.parseInt(scratchUTF16.chars, 0, scratchUTF16.length);
   }
@@ -217,7 +217,7 @@
   private class SimpleTVFields extends Fields {
     private final SortedMap<String,SimpleTVTerms> fields;
     
-    SimpleTVFields(SortedMap<String,SimpleTVTerms> fields) throws IOException {
+    SimpleTVFields(SortedMap<String,SimpleTVTerms> fields) {
       this.fields = fields;
     }
 
@@ -228,7 +228,7 @@
         private Map.Entry<String,SimpleTVTerms> current = null;
         
         @Override
-        public String next() throws IOException {
+        public String next() {
           if (!iterator.hasNext()) {
             return null;
           } else {
@@ -238,7 +238,7 @@
         }
 
         @Override
-        public Terms terms() throws IOException {
+        public Terms terms() {
           return current.getValue();
         }
       };
Index: lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextNormsFormat.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextNormsFormat.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/codecs/simpletext/SimpleTextNormsFormat.java	(working copy)
@@ -95,8 +95,7 @@
   public static class SimpleTextNormsPerDocConsumer extends
       SimpleTextPerDocConsumer {
     
-    public SimpleTextNormsPerDocConsumer(PerDocWriteState state)
-      throws IOException {
+    public SimpleTextNormsPerDocConsumer(PerDocWriteState state) {
       super(state, NORMS_SEG_SUFFIX);
     }
     
Index: lucene/core/src/java/org/apache/lucene/analysis/CachingTokenFilter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/analysis/CachingTokenFilter.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/analysis/CachingTokenFilter.java	(working copy)
@@ -61,14 +61,14 @@
   }
   
   @Override
-  public final void end() throws IOException {
+  public final void end() {
     if (finalState != null) {
       restoreState(finalState);
     }
   }
 
   @Override
-  public void reset() throws IOException {
+  public void reset() {
     if(cache != null) {
       iterator = cache.iterator();
     }
Index: lucene/core/src/java/org/apache/lucene/search/TermRangeTermsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/TermRangeTermsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/TermRangeTermsEnum.java	(working copy)
@@ -62,7 +62,7 @@
    * @throws IOException
    */
   public TermRangeTermsEnum(TermsEnum tenum, BytesRef lowerTerm, BytesRef upperTerm, 
-    boolean includeLower, boolean includeUpper) throws IOException {
+    boolean includeLower, boolean includeUpper) {
     super(tenum);
 
     // do a little bit of normalization...
Index: lucene/core/src/java/org/apache/lucene/search/BooleanScorer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/BooleanScorer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/BooleanScorer.java	(working copy)
@@ -98,7 +98,7 @@
     }
     
     @Override
-    public void setScorer(Scorer scorer) throws IOException {
+    public void setScorer(Scorer scorer) {
       this.scorer = scorer;
     }
     
@@ -122,7 +122,7 @@
     public BucketScorer(Weight weight) { super(weight); }
     
     @Override
-    public int advance(int target) throws IOException { return NO_MORE_DOCS; }
+    public int advance(int target) { return NO_MORE_DOCS; }
 
     @Override
     public int docID() { return doc; }
@@ -131,10 +131,10 @@
     public float freq() { return freq; }
 
     @Override
-    public int nextDoc() throws IOException { return NO_MORE_DOCS; }
+    public int nextDoc() { return NO_MORE_DOCS; }
     
     @Override
-    public float score() throws IOException { return score; }
+    public float score() { return score; }
     
   }
 
@@ -181,8 +181,7 @@
     public SubScorer next;
 
     public SubScorer(Scorer scorer, boolean required, boolean prohibited,
-        Collector collector, SubScorer next)
-      throws IOException {
+        Collector collector, SubScorer next) {
       if (required) {
         throw new IllegalArgumentException("this scorer cannot handle required=true");
       }
@@ -299,7 +298,7 @@
   }
   
   @Override
-  public int advance(int target) throws IOException {
+  public int advance(int target) {
     throw new UnsupportedOperationException();
   }
 
@@ -309,7 +308,7 @@
   }
 
   @Override
-  public int nextDoc() throws IOException {
+  public int nextDoc() {
     throw new UnsupportedOperationException();
   }
 
Index: lucene/core/src/java/org/apache/lucene/search/PrefixTermsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/PrefixTermsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/PrefixTermsEnum.java	(working copy)
@@ -35,7 +35,7 @@
 
   private final BytesRef prefixRef;
 
-  public PrefixTermsEnum(TermsEnum tenum, BytesRef prefixText) throws IOException {
+  public PrefixTermsEnum(TermsEnum tenum, BytesRef prefixText) {
     super(tenum);
     setInitialSeekTerm(this.prefixRef = prefixText);
   }
Index: lucene/core/src/java/org/apache/lucene/search/MatchOnlyConjunctionTermsScorer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/MatchOnlyConjunctionTermsScorer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/MatchOnlyConjunctionTermsScorer.java	(working copy)
@@ -22,12 +22,12 @@
 /** Scorer for conjunctions, sets of terms, all of which are required. */
 final class MatchOnlyConjunctionTermScorer extends ConjunctionTermScorer {
   MatchOnlyConjunctionTermScorer(Weight weight, float coord,
-      DocsAndFreqs[] docsAndFreqs) throws IOException {
+      DocsAndFreqs[] docsAndFreqs) {
     super(weight, coord, docsAndFreqs);
   }
 
   @Override
-  public float score() throws IOException {
+  public float score() {
     float sum = 0.0f;
     for (DocsAndFreqs docs : docsAndFreqs) {
       sum += docs.docScorer.score(lastDoc, 1);
Index: lucene/core/src/java/org/apache/lucene/search/CachingCollector.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/CachingCollector.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/CachingCollector.java	(working copy)
@@ -338,13 +338,13 @@
       }
       
       @Override
-      public void setScorer(Scorer scorer) throws IOException {}
+      public void setScorer(Scorer scorer) {}
 
       @Override
-      public void collect(int doc) throws IOException {}
+      public void collect(int doc) {}
 
       @Override
-      public void setNextReader(AtomicReaderContext context) throws IOException {}
+      public void setNextReader(AtomicReaderContext context) {}
 
     };
     return create(other, cacheScores, maxRAMMB);
Index: lucene/core/src/java/org/apache/lucene/search/TopFieldCollector.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/TopFieldCollector.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/TopFieldCollector.java	(working copy)
@@ -51,7 +51,7 @@
     final FieldValueHitQueue<Entry> queue;
     
     public OneComparatorNonScoringCollector(FieldValueHitQueue<Entry> queue,
-        int numHits, boolean fillFields) throws IOException {
+        int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
       this.queue = queue;
       comparator = queue.getComparators()[0];
@@ -114,7 +114,7 @@
       OneComparatorNonScoringCollector {
 
     public OutOfOrderOneComparatorNonScoringCollector(FieldValueHitQueue<Entry> queue,
-        int numHits, boolean fillFields) throws IOException {
+        int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
     }
     
@@ -161,7 +161,7 @@
     Scorer scorer;
 
     public OneComparatorScoringNoMaxScoreCollector(FieldValueHitQueue<Entry> queue,
-        int numHits, boolean fillFields) throws IOException {
+        int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
     }
     
@@ -221,8 +221,7 @@
       OneComparatorScoringNoMaxScoreCollector {
 
     public OutOfOrderOneComparatorScoringNoMaxScoreCollector(
-        FieldValueHitQueue<Entry> queue, int numHits, boolean fillFields)
-        throws IOException {
+        FieldValueHitQueue<Entry> queue, int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
     }
     
@@ -275,7 +274,7 @@
     Scorer scorer;
     
     public OneComparatorScoringMaxScoreCollector(FieldValueHitQueue<Entry> queue,
-        int numHits, boolean fillFields) throws IOException {
+        int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
       // Must set maxScore to NEG_INF, or otherwise Math.max always returns NaN.
       maxScore = Float.NEGATIVE_INFINITY;
@@ -335,7 +334,7 @@
       OneComparatorScoringMaxScoreCollector {
 
     public OutOfOrderOneComparatorScoringMaxScoreCollector(FieldValueHitQueue<Entry> queue,
-        int numHits, boolean fillFields) throws IOException {
+        int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
     }
     
@@ -386,7 +385,7 @@
     final int[] reverseMul;
     final FieldValueHitQueue<Entry> queue;
     public MultiComparatorNonScoringCollector(FieldValueHitQueue<Entry> queue,
-        int numHits, boolean fillFields) throws IOException {
+        int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
       this.queue = queue;
       comparators = queue.getComparators();
@@ -472,7 +471,7 @@
       MultiComparatorNonScoringCollector {
     
     public OutOfOrderMultiComparatorNonScoringCollector(FieldValueHitQueue<Entry> queue,
-        int numHits, boolean fillFields) throws IOException {
+        int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
     }
     
@@ -541,7 +540,7 @@
     Scorer scorer;
     
     public MultiComparatorScoringMaxScoreCollector(FieldValueHitQueue<Entry> queue,
-        int numHits, boolean fillFields) throws IOException {
+        int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
       // Must set maxScore to NEG_INF, or otherwise Math.max always returns NaN.
       maxScore = Float.NEGATIVE_INFINITY;
@@ -620,7 +619,7 @@
       extends MultiComparatorScoringMaxScoreCollector {
     
     public OutOfOrderMultiComparatorScoringMaxScoreCollector(FieldValueHitQueue<Entry> queue,
-        int numHits, boolean fillFields) throws IOException {
+        int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
     }
     
@@ -693,7 +692,7 @@
     Scorer scorer;
     
     public MultiComparatorScoringNoMaxScoreCollector(FieldValueHitQueue<Entry> queue,
-        int numHits, boolean fillFields) throws IOException {
+        int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
     }
     
@@ -771,8 +770,7 @@
       extends MultiComparatorScoringNoMaxScoreCollector {
     
     public OutOfOrderMultiComparatorScoringNoMaxScoreCollector(
-        FieldValueHitQueue<Entry> queue, int numHits, boolean fillFields)
-        throws IOException {
+        FieldValueHitQueue<Entry> queue, int numHits, boolean fillFields) {
       super(queue, numHits, fillFields);
     }
     
@@ -860,8 +858,7 @@
     
     public PagingFieldCollector(
                                 FieldValueHitQueue<Entry> queue, FieldDoc after, int numHits, boolean fillFields,
-                                boolean trackDocScores, boolean trackMaxScore)
-        throws IOException {
+                                boolean trackDocScores, boolean trackMaxScore) {
       super(queue, numHits, fillFields);
       this.queue = queue;
       this.trackDocScores = trackDocScores;
@@ -981,7 +978,7 @@
     }
 
     @Override
-    public void setScorer(Scorer scorer) throws IOException {
+    public void setScorer(Scorer scorer) {
       this.scorer = scorer;
       for (int i = 0; i < comparators.length; i++) {
         comparators[i].setScorer(scorer);
Index: lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java	(working copy)
@@ -182,17 +182,17 @@
   }
 
   /** Sugar for <code>.getIndexReader().document(docID)</code> */
-  public Document doc(int docID) throws CorruptIndexException, IOException {
+  public Document doc(int docID) throws IOException {
     return reader.document(docID);
   }
 
   /** Sugar for <code>.getIndexReader().document(docID, fieldVisitor)</code> */
-  public void doc(int docID, StoredFieldVisitor fieldVisitor) throws CorruptIndexException, IOException {
+  public void doc(int docID, StoredFieldVisitor fieldVisitor) throws IOException {
     reader.document(docID, fieldVisitor);
   }
 
   /** Sugar for <code>.getIndexReader().document(docID, fieldsToLoad)</code> */
-  public final Document document(int docID, Set<String> fieldsToLoad) throws CorruptIndexException, IOException {
+  public final Document document(int docID, Set<String> fieldsToLoad) throws IOException {
     return reader.document(docID, fieldsToLoad);
   }
 
Index: lucene/core/src/java/org/apache/lucene/search/ExactPhraseScorer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/ExactPhraseScorer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/ExactPhraseScorer.java	(working copy)
@@ -194,7 +194,7 @@
   }
 
   @Override
-  public float score() throws IOException {
+  public float score() {
     return docScorer.score(docID, freq);
   }
 
Index: lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java	(working copy)
@@ -186,7 +186,7 @@
    * will return a refreshed instance. Otherwise, consider using the
    * non-blocking {@link #maybeRefresh()}.
    */
-  public final void maybeRefreshBlocking() throws IOException, InterruptedException {
+  public final void maybeRefreshBlocking() throws IOException {
     ensureOpen();
 
     // Ensure only 1 thread does refresh at once
Index: lucene/core/src/java/org/apache/lucene/search/spans/NearSpansUnordered.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/spans/NearSpansUnordered.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/spans/NearSpansUnordered.java	(working copy)
@@ -285,7 +285,7 @@
     }
   }
 
-  private void addToList(SpansCell cell) throws IOException {
+  private void addToList(SpansCell cell) {
     if (last != null) {			  // add next to end of list
       last.next = cell;
     } else
@@ -301,7 +301,7 @@
     last.next = null;
   }
 
-  private void queueToList() throws IOException {
+  private void queueToList() {
     last = first = null;
     while (queue.top() != null) {
       addToList(queue.pop());
Index: lucene/core/src/java/org/apache/lucene/search/spans/TermSpans.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/spans/TermSpans.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/spans/TermSpans.java	(working copy)
@@ -37,7 +37,7 @@
   protected int count;
   protected int position;
 
-  public TermSpans(DocsAndPositionsEnum postings, Term term) throws IOException {
+  public TermSpans(DocsAndPositionsEnum postings, Term term) {
     this.postings = postings;
     this.term = term;
     doc = -1;
Index: lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxScorer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxScorer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxScorer.java	(working copy)
@@ -55,7 +55,7 @@
    *          length may be larger than the actual number of scorers.
    */
   public DisjunctionMaxScorer(Weight weight, float tieBreakerMultiplier,
-      Scorer[] subScorers, int numScorers) throws IOException {
+      Scorer[] subScorers, int numScorers) {
     super(weight);
     this.tieBreakerMultiplier = tieBreakerMultiplier;
     // The passed subScorers array includes only scorers which have documents
Index: lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java	(working copy)
@@ -75,7 +75,7 @@
       private ScoreTerm st;
       
       @Override
-      public void setNextEnum(TermsEnum termsEnum) throws IOException {
+      public void setNextEnum(TermsEnum termsEnum) {
         this.termsEnum = termsEnum;
         this.termComp = termsEnum.getComparator();
         
@@ -89,7 +89,7 @@
     
       // for assert:
       private BytesRef lastTerm;
-      private boolean compareToLastTerm(BytesRef t) throws IOException {
+      private boolean compareToLastTerm(BytesRef t) {
         if (lastTerm == null && t != null) {
           lastTerm = BytesRef.deepCopyOf(t);
         } else if (t == null) {
Index: lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java	(working copy)
@@ -568,7 +568,7 @@
   }
 
   @Override
-  public final int freq() throws IOException {
+  public final int freq() {
     return _freq;
   }
 
Index: lucene/core/src/java/org/apache/lucene/search/MatchAllDocsQuery.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/MatchAllDocsQuery.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/MatchAllDocsQuery.java	(working copy)
@@ -38,7 +38,7 @@
     private final int maxDoc;
     private final Bits liveDocs;
 
-    MatchAllScorer(IndexReader reader, Bits liveDocs, Weight w, float score) throws IOException {
+    MatchAllScorer(IndexReader reader, Bits liveDocs, Weight w, float score) {
       super(w);
       this.liveDocs = liveDocs;
       this.score = score;
Index: lucene/core/src/java/org/apache/lucene/search/TermScorer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/TermScorer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/TermScorer.java	(working copy)
@@ -39,7 +39,7 @@
    *          The </code>Similarity.ExactSimScorer</code> implementation 
    *          to be used for score computations.
    */
-  TermScorer(Weight weight, DocsEnum td, Similarity.ExactSimScorer docScorer) throws IOException {
+  TermScorer(Weight weight, DocsEnum td, Similarity.ExactSimScorer docScorer) {
     super(weight);
     this.docScorer = docScorer;
     this.docsEnum = td;
Index: lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java	(working copy)
@@ -337,8 +337,7 @@
     private final BoostAttribute boostAtt =
       attributes().addAttribute(BoostAttribute.class);
     
-    public AutomatonFuzzyTermsEnum(TermsEnum tenum, CompiledAutomaton compiled[]) 
-      throws IOException {
+    public AutomatonFuzzyTermsEnum(TermsEnum tenum, CompiledAutomaton compiled[]) {
       super(tenum, false);
       this.matchers = new ByteRunAutomaton[compiled.length];
       for (int i = 0; i < compiled.length; i++)
Index: lucene/core/src/java/org/apache/lucene/search/NRTManager.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/NRTManager.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/NRTManager.java	(working copy)
@@ -232,13 +232,13 @@
       return indexingGen.get();
     }
 
-    public long addIndexes(Directory... dirs) throws CorruptIndexException, IOException {
+    public long addIndexes(Directory... dirs) throws IOException {
       writer.addIndexes(dirs);
       // Return gen as of when indexing finished:
       return indexingGen.get();
     }
 
-    public long addIndexes(IndexReader... readers) throws CorruptIndexException, IOException {
+    public long addIndexes(IndexReader... readers) throws IOException {
       writer.addIndexes(readers);
       // Return gen as of when indexing finished:
       return indexingGen.get();
Index: lucene/core/src/java/org/apache/lucene/search/ScoringRewrite.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/ScoringRewrite.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/ScoringRewrite.java	(working copy)
@@ -126,7 +126,7 @@
     private BoostAttribute boostAtt;
     
     @Override
-    public void setNextEnum(TermsEnum termsEnum) throws IOException {
+    public void setNextEnum(TermsEnum termsEnum) {
       this.termsEnum = termsEnum;
       this.boostAtt = termsEnum.attributes().addAttribute(BoostAttribute.class);
     }
Index: lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java	(working copy)
@@ -172,7 +172,7 @@
     final DocIdSetIterator docIdSetIterator;
     final float theScore;
 
-    public ConstantScorer(DocIdSetIterator docIdSetIterator, Weight w, float theScore) throws IOException {
+    public ConstantScorer(DocIdSetIterator docIdSetIterator, Weight w, float theScore) {
       super(w);
       this.theScore = theScore;
       this.docIdSetIterator = docIdSetIterator;
Index: lucene/core/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java	(working copy)
@@ -122,7 +122,7 @@
     }
   
     @Override
-    public void setNextEnum(TermsEnum termsEnum) throws IOException {
+    public void setNextEnum(TermsEnum termsEnum) {
       this.termsEnum = termsEnum;
     }
       
Index: lucene/core/src/java/org/apache/lucene/search/DocIdSet.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/DocIdSet.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/DocIdSet.java	(working copy)
@@ -31,11 +31,11 @@
     
     private final DocIdSetIterator iterator = new DocIdSetIterator() {
       @Override
-      public int advance(int target) throws IOException { return NO_MORE_DOCS; }
+      public int advance(int target) { return NO_MORE_DOCS; }
       @Override
       public int docID() { return NO_MORE_DOCS; }
       @Override
-      public int nextDoc() throws IOException { return NO_MORE_DOCS; }
+      public int nextDoc() { return NO_MORE_DOCS; }
     };
     
     @Override
@@ -50,7 +50,7 @@
     
     // we explicitely provide no random access, as this filter is 100% sparse and iterator exits faster
     @Override
-    public Bits bits() throws IOException {
+    public Bits bits() {
       return null;
     }
   };
Index: lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java	(working copy)
@@ -32,7 +32,7 @@
   private final DocsAndFreqs lead;
 
   ConjunctionTermScorer(Weight weight, float coord,
-      DocsAndFreqs[] docsAndFreqs) throws IOException {
+      DocsAndFreqs[] docsAndFreqs) {
     super(weight);
     this.coord = coord;
     this.docsAndFreqs = docsAndFreqs;
Index: lucene/core/src/java/org/apache/lucene/search/MatchOnlyTermScorer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/MatchOnlyTermScorer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/MatchOnlyTermScorer.java	(working copy)
@@ -42,7 +42,7 @@
    *          The </code>Similarity.ExactSimScorer</code> implementation 
    *          to be used for score computations.
    */
-  MatchOnlyTermScorer(Weight weight, DocsEnum td, Similarity.ExactSimScorer docScorer) throws IOException {
+  MatchOnlyTermScorer(Weight weight, DocsEnum td, Similarity.ExactSimScorer docScorer) {
     super(weight);
     this.docScorer = docScorer;
     this.docsEnum = td;
Index: lucene/core/src/java/org/apache/lucene/search/NumericRangeQuery.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/NumericRangeQuery.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/NumericRangeQuery.java	(working copy)
@@ -415,7 +415,7 @@
     private final LinkedList<BytesRef> rangeBounds = new LinkedList<BytesRef>();
     private final Comparator<BytesRef> termComp;
 
-    NumericRangeTermsEnum(final TermsEnum tenum) throws IOException {
+    NumericRangeTermsEnum(final TermsEnum tenum) {
       super(tenum);
       switch (dataType) {
         case LONG:
@@ -517,7 +517,7 @@
     }
     
     @Override
-    protected final BytesRef nextSeekTerm(BytesRef term) throws IOException {
+    protected final BytesRef nextSeekTerm(BytesRef term) {
       while (rangeBounds.size() >= 2) {
         nextRange();
         
Index: lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java	(working copy)
@@ -53,7 +53,7 @@
    * A provider that provides no named automata
    */
   private static AutomatonProvider defaultProvider = new AutomatonProvider() {
-    public Automaton getAutomaton(String name) throws IOException {
+    public Automaton getAutomaton(String name) {
       return null;
     }
   };
Index: lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/IndexWriter.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/IndexWriter.java	(working copy)
@@ -530,7 +530,7 @@
    * If the reader isn't being pooled, the segmentInfo's 
    * delCount is returned.
    */
-  public int numDeletedDocs(SegmentInfoPerCommit info) throws IOException {
+  public int numDeletedDocs(SegmentInfoPerCommit info) {
     ensureOpen(false);
     int delCount = info.getDelCount();
 
@@ -572,19 +572,13 @@
    * @param conf
    *          the configuration settings according to which IndexWriter should
    *          be initialized.
-   * @throws CorruptIndexException
-   *           if the index is corrupt
-   * @throws LockObtainFailedException
-   *           if another writer has this index open (<code>write.lock</code>
-   *           could not be obtained)
    * @throws IOException
    *           if the directory cannot be read/written to, or if it does not
    *           exist and <code>conf.getOpenMode()</code> is
    *           <code>OpenMode.APPEND</code> or if there is any other low-level
    *           IO error
    */
-  public IndexWriter(Directory d, IndexWriterConfig conf)
-      throws CorruptIndexException, LockObtainFailedException, IOException {
+  public IndexWriter(Directory d, IndexWriterConfig conf) throws IOException {
     config = new LiveIndexWriterConfig(conf.clone());
     directory = d;
     analyzer = config.getAnalyzer();
@@ -760,7 +754,7 @@
     return config;
   }
 
-  private void messageState() throws IOException {
+  private void messageState() {
     if (infoStream.isEnabled("IW")) {
       infoStream.message("IW", "\ndir=" + directory + "\n" +
             "index=" + segString() + "\n" +
@@ -808,10 +802,9 @@
    * you should immediately close the writer, again.  See <a
    * href="#OOME">above</a> for details.</p>
    *
-   * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public void close() throws CorruptIndexException, IOException {
+  public void close() throws IOException {
     close(true);
   }
 
@@ -838,7 +831,7 @@
    * finished (which should be at most a few seconds), and
    * then return.
    */
-  public void close(boolean waitForMerges) throws CorruptIndexException, IOException {
+  public void close(boolean waitForMerges) throws IOException {
 
     // Ensure that only one thread actually gets to do the
     // closing, and make sure no commit is also in progress:
@@ -877,7 +870,7 @@
     }
   }
 
-  private void closeInternal(boolean waitForMerges, boolean doFlush) throws CorruptIndexException, IOException {
+  private void closeInternal(boolean waitForMerges, boolean doFlush) throws IOException {
 
     try {
 
@@ -987,7 +980,7 @@
    *  are not counted.  If you really need these to be
    *  counted you should call {@link #commit()} first.
    *  @see #numDocs */
-  public synchronized int numDocs() throws IOException {
+  public synchronized int numDocs() {
     ensureOpen();
     int count;
     if (docWriter != null)
@@ -1001,7 +994,7 @@
     return count;
   }
 
-  public synchronized boolean hasDeletions() throws IOException {
+  public synchronized boolean hasDeletions() {
     ensureOpen();
     if (bufferedDeletesStream.any()) {
       return true;
@@ -1059,7 +1052,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public void addDocument(Iterable<? extends IndexableField> doc) throws CorruptIndexException, IOException {
+  public void addDocument(Iterable<? extends IndexableField> doc) throws IOException {
     addDocument(doc, analyzer);
   }
 
@@ -1078,7 +1071,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public void addDocument(Iterable<? extends IndexableField> doc, Analyzer analyzer) throws CorruptIndexException, IOException {
+  public void addDocument(Iterable<? extends IndexableField> doc, Analyzer analyzer) throws IOException {
     updateDocument(null, doc, analyzer);
   }
 
@@ -1123,7 +1116,7 @@
    *
    * @lucene.experimental
    */
-  public void addDocuments(Iterable<? extends Iterable<? extends IndexableField>> docs) throws CorruptIndexException, IOException {
+  public void addDocuments(Iterable<? extends Iterable<? extends IndexableField>> docs) throws IOException {
     addDocuments(docs, analyzer);
   }
 
@@ -1138,7 +1131,7 @@
    *
    * @lucene.experimental
    */
-  public void addDocuments(Iterable<? extends Iterable<? extends IndexableField>> docs, Analyzer analyzer) throws CorruptIndexException, IOException {
+  public void addDocuments(Iterable<? extends Iterable<? extends IndexableField>> docs, Analyzer analyzer) throws IOException {
     updateDocuments(null, docs, analyzer);
   }
 
@@ -1155,7 +1148,7 @@
    *
    * @lucene.experimental
    */
-  public void updateDocuments(Term delTerm, Iterable<? extends Iterable<? extends IndexableField>> docs) throws CorruptIndexException, IOException {
+  public void updateDocuments(Term delTerm, Iterable<? extends Iterable<? extends IndexableField>> docs) throws IOException {
     updateDocuments(delTerm, docs, analyzer);
   }
 
@@ -1173,7 +1166,7 @@
    *
    * @lucene.experimental
    */
-  public void updateDocuments(Term delTerm, Iterable<? extends Iterable<? extends IndexableField>> docs, Analyzer analyzer) throws CorruptIndexException, IOException {
+  public void updateDocuments(Term delTerm, Iterable<? extends Iterable<? extends IndexableField>> docs, Analyzer analyzer) throws IOException {
     ensureOpen();
     try {
       boolean success = false;
@@ -1207,7 +1200,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public void deleteDocuments(Term term) throws CorruptIndexException, IOException {
+  public void deleteDocuments(Term term) throws IOException {
     ensureOpen();
     try {
       docWriter.deleteTerms(term);
@@ -1230,7 +1223,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public void deleteDocuments(Term... terms) throws CorruptIndexException, IOException {
+  public void deleteDocuments(Term... terms) throws IOException {
     ensureOpen();
     try {
       docWriter.deleteTerms(terms);
@@ -1250,7 +1243,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public void deleteDocuments(Query query) throws CorruptIndexException, IOException {
+  public void deleteDocuments(Query query) throws IOException {
     ensureOpen();
     try {
       docWriter.deleteQueries(query);
@@ -1272,7 +1265,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public void deleteDocuments(Query... queries) throws CorruptIndexException, IOException {
+  public void deleteDocuments(Query... queries) throws IOException {
     ensureOpen();
     try {
       docWriter.deleteQueries(queries);
@@ -1298,7 +1291,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public void updateDocument(Term term, Iterable<? extends IndexableField> doc) throws CorruptIndexException, IOException {
+  public void updateDocument(Term term, Iterable<? extends IndexableField> doc) throws IOException {
     ensureOpen();
     updateDocument(term, doc, getAnalyzer());
   }
@@ -1322,7 +1315,7 @@
    * @throws IOException if there is a low-level IO error
    */
   public void updateDocument(Term term, Iterable<? extends IndexableField> doc, Analyzer analyzer)
-      throws CorruptIndexException, IOException {
+      throws IOException {
     ensureOpen();
     try {
       boolean success = false;
@@ -1463,7 +1456,7 @@
    * @param maxNumSegments maximum number of segments left
    * in the index after merging finishes
   */
-  public void forceMerge(int maxNumSegments) throws CorruptIndexException, IOException {
+  public void forceMerge(int maxNumSegments) throws IOException {
     forceMerge(maxNumSegments, true);
   }
 
@@ -1477,7 +1470,7 @@
    *  you should immediately close the writer.  See <a
    *  href="#OOME">above</a> for details.</p>
    */
-  public void forceMerge(int maxNumSegments, boolean doWait) throws CorruptIndexException, IOException {
+  public void forceMerge(int maxNumSegments, boolean doWait) throws IOException {
     ensureOpen();
 
     if (maxNumSegments < 1)
@@ -1588,7 +1581,7 @@
    * {@link MergePolicy.MergeAbortedException}.
    */
   public void forceMergeDeletes(boolean doWait)
-    throws CorruptIndexException, IOException {
+    throws IOException {
     ensureOpen();
 
     flush(true, true);
@@ -1673,7 +1666,7 @@
    *  you should immediately close the writer.  See <a
    *  href="#OOME">above</a> for details.</p>
    */
-  public void forceMergeDeletes() throws CorruptIndexException, IOException {
+  public void forceMergeDeletes() throws IOException {
     forceMergeDeletes(true);
   }
 
@@ -1691,18 +1684,18 @@
    * you should immediately close the writer.  See <a
    * href="#OOME">above</a> for details.</p>
    */
-  public final void maybeMerge() throws CorruptIndexException, IOException {
+  public final void maybeMerge() throws IOException {
     maybeMerge(-1);
   }
 
-  private final void maybeMerge(int maxNumSegments) throws CorruptIndexException, IOException {
+  private final void maybeMerge(int maxNumSegments) throws IOException {
     ensureOpen(false);
     updatePendingMerges(maxNumSegments);
     mergeScheduler.merge(this);
   }
 
   private synchronized void updatePendingMerges(int maxNumSegments)
-    throws CorruptIndexException, IOException {
+    throws IOException {
     assert maxNumSegments == -1 || maxNumSegments > 0;
 
     if (stopMerges) {
@@ -1920,7 +1913,7 @@
     }
   }
 
-  private synchronized void finishMerges(boolean waitForMerges) throws IOException {
+  private synchronized void finishMerges(boolean waitForMerges) {
     if (!waitForMerges) {
 
       stopMerges = true;
@@ -2086,7 +2079,7 @@
     return newSegment;
   }
   
-  synchronized void publishFrozenDeletes(FrozenBufferedDeletes packet) throws IOException {
+  synchronized void publishFrozenDeletes(FrozenBufferedDeletes packet) {
     assert packet != null && packet.any();
     synchronized (bufferedDeletesStream) {
       bufferedDeletesStream.push(packet);
@@ -2195,7 +2188,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public void addIndexes(Directory... dirs) throws CorruptIndexException, IOException {
+  public void addIndexes(Directory... dirs) throws IOException {
     ensureOpen();
 
     noDupDirs(dirs);
@@ -2279,7 +2272,7 @@
    * @throws IOException
    *           if there is a low-level IO error
    */
-  public void addIndexes(IndexReader... readers) throws CorruptIndexException, IOException {
+  public void addIndexes(IndexReader... readers) throws IOException {
     ensureOpen();
     int numDocs = 0;
 
@@ -2467,7 +2460,7 @@
    * href="#OOME">above</a> for details.</p>
    *
    * @see #prepareCommit(Map) */
-  public final void prepareCommit() throws CorruptIndexException, IOException {
+  public final void prepareCommit() throws IOException {
     ensureOpen();
     prepareCommit(null);
   }
@@ -2502,7 +2495,7 @@
    *  only "stick" if there are actually changes in the
    *  index to commit.
    */
-  public final void prepareCommit(Map<String,String> commitUserData) throws CorruptIndexException, IOException {
+  public final void prepareCommit(Map<String,String> commitUserData) throws IOException {
     ensureOpen(false);
 
     synchronized(commitLock) {
@@ -2633,7 +2626,7 @@
    * @see #prepareCommit
    * @see #commit(Map)
    */
-  public final void commit() throws CorruptIndexException, IOException {
+  public final void commit() throws IOException {
     commit(null);
   }
 
@@ -2646,14 +2639,14 @@
    * you should immediately close the writer.  See <a
    * href="#OOME">above</a> for details.</p>
    */
-  public final void commit(Map<String,String> commitUserData) throws CorruptIndexException, IOException {
+  public final void commit(Map<String,String> commitUserData) throws IOException {
 
     ensureOpen();
 
     commitInternal(commitUserData);
   }
 
-  private final void commitInternal(Map<String,String> commitUserData) throws CorruptIndexException, IOException {
+  private final void commitInternal(Map<String,String> commitUserData) throws IOException {
 
     if (infoStream.isEnabled("IW")) {
       infoStream.message("IW", "commit: start");
@@ -2681,7 +2674,7 @@
     }
   }
 
-  private synchronized final void finishCommit() throws CorruptIndexException, IOException {
+  private synchronized final void finishCommit() throws IOException {
 
     if (pendingCommit != null) {
       try {
@@ -2727,7 +2720,7 @@
    *  deletes or docs were flushed) if necessary
    * @param applyAllDeletes whether pending deletes should also
    */
-  protected final void flush(boolean triggerMerge, boolean applyAllDeletes) throws CorruptIndexException, IOException {
+  protected final void flush(boolean triggerMerge, boolean applyAllDeletes) throws IOException {
 
     // NOTE: this method cannot be sync'd because
     // maybeMerge() in turn calls mergeScheduler.merge which
@@ -2743,7 +2736,7 @@
     }
   }
 
-  private boolean doFlush(boolean applyAllDeletes) throws CorruptIndexException, IOException {
+  private boolean doFlush(boolean applyAllDeletes) throws IOException {
     if (hitOOM) {
       throw new IllegalStateException("this writer hit an OutOfMemoryError; cannot flush");
     }
@@ -2850,7 +2843,7 @@
     return docWriter.getNumDocs();
   }
 
-  private synchronized void ensureValidMerge(MergePolicy.OneMerge merge) throws IOException {
+  private synchronized void ensureValidMerge(MergePolicy.OneMerge merge) {
     for(SegmentInfoPerCommit info : merge.segments) {
       if (!segmentInfos.contains(info)) {
         throw new MergePolicy.MergeException("MergePolicy selected a segment (" + info.info.name + ") that is not in the current index " + segString(), directory);
@@ -3110,8 +3103,7 @@
    * 
    * @lucene.experimental
    */
-  public void merge(MergePolicy.OneMerge merge)
-    throws CorruptIndexException, IOException {
+  public void merge(MergePolicy.OneMerge merge) throws IOException {
 
     boolean success = false;
 
@@ -3173,7 +3165,7 @@
    *  are now participating in a merge, and true is
    *  returned.  Else (the merge conflicts) false is
    *  returned. */
-  final synchronized boolean registerMerge(MergePolicy.OneMerge merge) throws MergePolicy.MergeAbortedException, IOException {
+  final synchronized boolean registerMerge(MergePolicy.OneMerge merge) throws IOException {
 
     if (merge.registerDone) {
       return true;
@@ -3356,7 +3348,7 @@
 
   /** Does fininishing for a merge, which is fast but holds
    *  the synchronized lock on IndexWriter instance. */
-  final synchronized void mergeFinish(MergePolicy.OneMerge merge) throws IOException {
+  final synchronized void mergeFinish(MergePolicy.OneMerge merge) {
 
     // forceMerge, addIndexes or finishMerges may be waiting
     // on merges to finish.
@@ -3417,8 +3409,7 @@
   /** Does the actual (time-consuming) work of the merge,
    *  but without holding synchronized lock on IndexWriter
    *  instance */
-  private int mergeMiddle(MergePolicy.OneMerge merge)
-    throws CorruptIndexException, IOException {
+  private int mergeMiddle(MergePolicy.OneMerge merge) throws IOException {
 
     merge.checkAborted(directory);
 
@@ -3660,12 +3651,12 @@
   }
 
   /** @lucene.internal */
-  public synchronized String segString() throws IOException {
+  public synchronized String segString() {
     return segString(segmentInfos);
   }
 
   /** @lucene.internal */
-  public synchronized String segString(Iterable<SegmentInfoPerCommit> infos) throws IOException {
+  public synchronized String segString(Iterable<SegmentInfoPerCommit> infos) {
     final StringBuilder buffer = new StringBuilder();
     for(final SegmentInfoPerCommit info : infos) {
       if (buffer.length() > 0) {
@@ -3677,7 +3668,7 @@
   }
 
   /** @lucene.internal */
-  public synchronized String segString(SegmentInfoPerCommit info) throws IOException {
+  public synchronized String segString(SegmentInfoPerCommit info) {
     return info.toString(info.info.dir, numDeletedDocs(info) - info.getDelCount());
   }
 
Index: lucene/core/src/java/org/apache/lucene/index/NormsConsumer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/NormsConsumer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/NormsConsumer.java	(working copy)
@@ -87,10 +87,10 @@
   }
 
   @Override
-  void finishDocument() throws IOException {}
+  void finishDocument() {}
 
   @Override
-  void startDocument() throws IOException {}
+  void startDocument() {}
 
   @Override
   InvertedDocEndConsumerPerField addField(DocInverterPerField docInverterPerField,
Index: lucene/core/src/java/org/apache/lucene/index/BaseCompositeReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/BaseCompositeReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/BaseCompositeReader.java	(working copy)
@@ -67,7 +67,7 @@
    * cloned and not protected for modification, the subclass is responsible 
    * to do this.
    */
-  protected BaseCompositeReader(R[] subReaders) throws IOException {
+  protected BaseCompositeReader(R[] subReaders) {
     this.subReaders = subReaders;
     this.subReadersList = Collections.unmodifiableList(Arrays.asList(subReaders));
     starts = new int[subReaders.length + 1];    // build starts array
@@ -112,7 +112,7 @@
   }
 
   @Override
-  public final void document(int docID, StoredFieldVisitor visitor) throws CorruptIndexException, IOException {
+  public final void document(int docID, StoredFieldVisitor visitor) throws IOException {
     ensureOpen();
     final int i = readerIndex(docID);                          // find subreader num
     subReaders[i].document(docID - starts[i], visitor);    // dispatch to subreader
Index: lucene/core/src/java/org/apache/lucene/index/SortedBytesMergeUtils.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/SortedBytesMergeUtils.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/SortedBytesMergeUtils.java	(working copy)
@@ -218,7 +218,7 @@
       current = top[0].current;
     }
 
-    private void pushTop() throws IOException {
+    private void pushTop() {
       // call next() on each top, and put back into queue
       for (int i = 0; i < numTop; i++) {
         top[i].current = top[i].next();
Index: lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java	(working copy)
@@ -175,7 +175,7 @@
 
   /** Subclass inits w/ this, but be sure you then call
    *  uninvert, only once */
-  protected DocTermOrds(String field, int maxTermDocFreq, int indexIntervalBits) throws IOException {
+  protected DocTermOrds(String field, int maxTermDocFreq, int indexIntervalBits) {
     //System.out.println("DTO init field=" + field + " maxTDFreq=" + maxTermDocFreq);
     this.field = field;
     this.maxTermDocFreq = maxTermDocFreq;
@@ -703,7 +703,7 @@
     }
 
     @Override
-    public long ord() throws IOException {
+    public long ord() {
       return ordBase + ord;
     }
 
Index: lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumer.java	(working copy)
@@ -158,7 +158,7 @@
   }
 
   @Override
-  void startDocument() throws IOException {
+  void startDocument() {
     assert clearLastVectorFieldName();
     reset();
   }
Index: lucene/core/src/java/org/apache/lucene/index/MultiTermsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/MultiTermsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/MultiTermsEnum.java	(working copy)
@@ -258,12 +258,12 @@
   }
 
   @Override
-  public void seekExact(long ord) throws IOException {
+  public void seekExact(long ord) {
     throw new UnsupportedOperationException();
   }
 
   @Override
-  public long ord() throws IOException {
+  public long ord() {
     throw new UnsupportedOperationException();
   }
 
Index: lucene/core/src/java/org/apache/lucene/index/SerialMergeScheduler.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/SerialMergeScheduler.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/SerialMergeScheduler.java	(working copy)
@@ -27,8 +27,7 @@
    * "synchronized" so that even if the application is using
    * multiple threads, only one merge may run at a time. */
   @Override
-  synchronized public void merge(IndexWriter writer)
-    throws CorruptIndexException, IOException {
+  synchronized public void merge(IndexWriter writer) throws IOException {
 
     while(true) {
       MergePolicy.OneMerge merge = writer.getNextMerge();
Index: lucene/core/src/java/org/apache/lucene/index/FilteredTermsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/FilteredTermsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/FilteredTermsEnum.java	(working copy)
@@ -82,7 +82,7 @@
    * <P>You can only use this method, if you keep the default
    * implementation of {@link #nextSeekTerm}.
    */
-  protected final void setInitialSeekTerm(BytesRef term) throws IOException {
+  protected final void setInitialSeekTerm(BytesRef term) {
     this.initialSeekTerm = term;
   }
   
Index: lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java	(working copy)
@@ -191,7 +191,7 @@
    * @param files -- array of file names to check
    */
 
-  public static String getLastCommitSegmentsFileName(String[] files) throws IOException {
+  public static String getLastCommitSegmentsFileName(String[] files) {
     return IndexFileNames.fileNameFromGeneration(IndexFileNames.SEGMENTS,
                                                  "",
                                                  getLastCommitGeneration(files));
@@ -259,7 +259,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public final void read(Directory directory, String segmentFileName) throws CorruptIndexException, IOException {
+  public final void read(Directory directory, String segmentFileName) throws IOException {
     boolean success = false;
 
     // Clear any previous segments:
@@ -314,13 +314,13 @@
     }
   }
 
-  public final void read(Directory directory) throws CorruptIndexException, IOException {
+  public final void read(Directory directory) throws IOException {
     generation = lastGeneration = -1;
 
     new FindSegmentsFile(directory) {
 
       @Override
-      protected Object doBody(String segmentFileName) throws CorruptIndexException, IOException {
+      protected Object doBody(String segmentFileName) throws IOException {
         read(directory, segmentFileName);
         return null;
       }
@@ -483,11 +483,11 @@
       this.directory = directory;
     }
 
-    public Object run() throws CorruptIndexException, IOException {
+    public Object run() throws IOException {
       return run(null);
     }
     
-    public Object run(IndexCommit commit) throws CorruptIndexException, IOException {
+    public Object run(IndexCommit commit) throws IOException {
       if (commit != null) {
         if (directory != commit.getDirectory())
           throw new IOException("the specified commit does not match the specified Directory");
@@ -693,7 +693,7 @@
      * during the processing that could have been caused by
      * a writer committing.
      */
-    protected abstract Object doBody(String segmentFileName) throws CorruptIndexException, IOException;
+    protected abstract Object doBody(String segmentFileName) throws IOException;
   }
 
   // Carry over generation numbers from another SegmentInfos
@@ -702,7 +702,7 @@
     generation = other.generation;
   }
 
-  final void rollbackCommit(Directory dir) throws IOException {
+  final void rollbackCommit(Directory dir) {
     if (pendingSegnOutput != null) {
       try {
         pendingSegnOutput.close();
Index: lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java	(working copy)
@@ -91,7 +91,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  final MergeState merge() throws CorruptIndexException, IOException {
+  final MergeState merge() throws IOException {
     // NOTE: it's important to add calls to
     // checkAbort.work(...) if you make any changes to this
     // method that will spend alot of time.  The frequency
@@ -244,7 +244,7 @@
    * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  private int mergeFields() throws CorruptIndexException, IOException {
+  private int mergeFields() throws IOException {
     final StoredFieldsWriter fieldsWriter = codec.storedFieldsFormat().fieldsWriter(directory, mergeState.segmentInfo, context);
     
     try {
@@ -300,7 +300,7 @@
     return docBase;
   }
 
-  private final void mergeTerms(SegmentWriteState segmentWriteState) throws CorruptIndexException, IOException {
+  private final void mergeTerms(SegmentWriteState segmentWriteState) throws IOException {
     
     final List<Fields> fields = new ArrayList<Fields>();
     final List<ReaderSlice> slices = new ArrayList<ReaderSlice>();
Index: lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumerPerField.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumerPerField.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/TermVectorsConsumerPerField.java	(working copy)
@@ -90,7 +90,7 @@
    *  are enabled, to write the vectors to
    *  RAMOutputStream, which is then quickly flushed to
    *  the real term vectors files in the Directory. */  @Override
-  void finish() throws IOException {
+  void finish() {
     if (!doVectors || termsHashPerField.bytesHash.size() == 0) {
       return;
     }
Index: lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java	(working copy)
@@ -348,7 +348,7 @@
   }
 
   @Override
-  public void document(int docID, StoredFieldVisitor visitor) throws CorruptIndexException, IOException {
+  public void document(int docID, StoredFieldVisitor visitor) throws IOException {
     ensureOpen();
     in.document(docID, visitor);
   }
Index: lucene/core/src/java/org/apache/lucene/index/AutomatonTermsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/AutomatonTermsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/AutomatonTermsEnum.java	(working copy)
@@ -75,7 +75,7 @@
    * <p>
    * @param compiled CompiledAutomaton
    */
-  public AutomatonTermsEnum(TermsEnum tenum, CompiledAutomaton compiled) throws IOException {
+  public AutomatonTermsEnum(TermsEnum tenum, CompiledAutomaton compiled) {
     super(tenum);
     this.finite = compiled.finite;
     this.runAutomaton = compiled.runAutomaton;
Index: lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java	(working copy)
@@ -553,8 +553,7 @@
   }
 
   @Override
-  public MergeSpecification findForcedDeletesMerges(SegmentInfos infos)
-      throws CorruptIndexException, IOException {
+  public MergeSpecification findForcedDeletesMerges(SegmentInfos infos) throws IOException {
     if (verbose()) {
       message("findForcedDeletesMerges infos=" + writer.get().segString(infos) + " forceMergeDeletesPctAllowed=" + forceMergeDeletesPctAllowed);
     }
@@ -623,8 +622,7 @@
   public void close() {
   }
 
-  private boolean isMerged(SegmentInfoPerCommit info)
-    throws IOException {
+  private boolean isMerged(SegmentInfoPerCommit info) {
     IndexWriter w = writer.get();
     assert w != null;
     boolean hasDeletions = w.numDeletedDocs(info) > 0;
Index: lucene/core/src/java/org/apache/lucene/index/SegmentInfo.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/SegmentInfo.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/SegmentInfo.java	(working copy)
@@ -157,7 +157,7 @@
    * modify it.
    */
 
-  public Set<String> files() throws IOException {
+  public Set<String> files() {
     if (setFiles == null) {
       throw new IllegalStateException("files were not computed yet");
     }
Index: lucene/core/src/java/org/apache/lucene/index/UpgradeIndexMergePolicy.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/UpgradeIndexMergePolicy.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/UpgradeIndexMergePolicy.java	(working copy)
@@ -74,12 +74,12 @@
   }
   
   @Override
-  public MergeSpecification findMerges(SegmentInfos segmentInfos) throws CorruptIndexException, IOException {
+  public MergeSpecification findMerges(SegmentInfos segmentInfos) throws IOException {
     return base.findMerges(segmentInfos);
   }
   
   @Override
-  public MergeSpecification findForcedMerges(SegmentInfos segmentInfos, int maxSegmentCount, Map<SegmentInfoPerCommit,Boolean> segmentsToMerge) throws CorruptIndexException, IOException {
+  public MergeSpecification findForcedMerges(SegmentInfos segmentInfos, int maxSegmentCount, Map<SegmentInfoPerCommit,Boolean> segmentsToMerge) throws IOException {
     // first find all old segments
     final Map<SegmentInfoPerCommit,Boolean> oldSegments = new HashMap<SegmentInfoPerCommit,Boolean>();
     for (final SegmentInfoPerCommit si : segmentInfos) {
@@ -129,7 +129,7 @@
   }
   
   @Override
-  public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos) throws CorruptIndexException, IOException {
+  public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos) throws IOException {
     return base.findForcedDeletesMerges(segmentInfos);
   }
   
Index: lucene/core/src/java/org/apache/lucene/index/TermsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/TermsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/TermsEnum.java	(working copy)
@@ -240,12 +240,12 @@
     }
 
     @Override
-    public TermState termState() throws IOException {
+    public TermState termState() {
       throw new IllegalStateException("this method should never be called");
     }
 
     @Override
-    public void seekExact(BytesRef term, TermState state) throws IOException {
+    public void seekExact(BytesRef term, TermState state) {
       throw new IllegalStateException("this method should never be called");
     }
   };
Index: lucene/core/src/java/org/apache/lucene/index/PersistentSnapshotDeletionPolicy.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/PersistentSnapshotDeletionPolicy.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/PersistentSnapshotDeletionPolicy.java	(working copy)
@@ -106,8 +106,7 @@
    *          IndexWriter.
    */
   public PersistentSnapshotDeletionPolicy(IndexDeletionPolicy primary,
-      Directory dir, OpenMode mode, Version matchVersion)
-      throws CorruptIndexException, LockObtainFailedException, IOException {
+      Directory dir, OpenMode mode, Version matchVersion) throws IOException {
     super(primary, null);
 
     // Initialize the index writer over the snapshot directory.
@@ -175,7 +174,7 @@
   }
 
   /** Closes the index which writes the snapshots to the directory. */
-  public void close() throws CorruptIndexException, IOException {
+  public void close() throws IOException {
     writer.close();
   }
 
Index: lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java	(working copy)
@@ -51,7 +51,7 @@
       return reader.normValues(field);
     }
     
-    public boolean stopLoadingOnNull(AtomicReader reader, String field) throws IOException {
+    public boolean stopLoadingOnNull(AtomicReader reader, String field) {
       // for norms we drop all norms if one leaf reader has no norms and the field is present
       FieldInfos fieldInfos = reader.getFieldInfos();
       FieldInfo fieldInfo = fieldInfos.fieldInfo(field);
@@ -79,7 +79,7 @@
       return reader.docValues(field);
     }
     
-    public boolean stopLoadingOnNull(AtomicReader reader, String field) throws IOException {
+    public boolean stopLoadingOnNull(AtomicReader reader, String field) {
       return false;
     }
   }
@@ -437,7 +437,7 @@
       ordToOffset = type == Type.BYTES_VAR_SORTED ? new long[2] : null;
     }
     @Override
-    public void consume(BytesRef ref, int ord, long offset) throws IOException {
+    public void consume(BytesRef ref, int ord, long offset) {
       pagedBytes.copy(ref);
       if (ordToOffset != null) {
         if (ord+1 >= ordToOffset.length) {
Index: lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java	(working copy)
@@ -398,7 +398,7 @@
     MergePolicy.OneMerge runningMerge;
     private volatile boolean done;
 
-    public MergeThread(IndexWriter writer, MergePolicy.OneMerge startMerge) throws IOException {
+    public MergeThread(IndexWriter writer, MergePolicy.OneMerge startMerge) {
       this.tWriter = writer;
       this.startMerge = startMerge;
     }
Index: lucene/core/src/java/org/apache/lucene/index/NoMergePolicy.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/NoMergePolicy.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/NoMergePolicy.java	(working copy)
@@ -54,17 +54,14 @@
   public void close() {}
 
   @Override
-  public MergeSpecification findMerges(SegmentInfos segmentInfos)
-      throws CorruptIndexException, IOException { return null; }
+  public MergeSpecification findMerges(SegmentInfos segmentInfos) { return null; }
 
   @Override
   public MergeSpecification findForcedMerges(SegmentInfos segmentInfos,
-             int maxSegmentCount, Map<SegmentInfoPerCommit,Boolean> segmentsToMerge)
-      throws CorruptIndexException, IOException { return null; }
+             int maxSegmentCount, Map<SegmentInfoPerCommit,Boolean> segmentsToMerge) { return null; }
 
   @Override
-  public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos)
-      throws CorruptIndexException, IOException { return null; }
+  public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos) { return null; }
 
   @Override
   public boolean useCompoundFile(SegmentInfos segments, SegmentInfoPerCommit newSegment) { return useCompoundFile; }
Index: lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/MergePolicy.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/MergePolicy.java	(working copy)
@@ -299,7 +299,7 @@
    *          the total set of segments in the index
    */
   public abstract MergeSpecification findMerges(SegmentInfos segmentInfos)
-      throws CorruptIndexException, IOException;
+      throws IOException;
 
   /**
    * Determine what set of merge operations is necessary in
@@ -324,7 +324,7 @@
    */
   public abstract MergeSpecification findForcedMerges(
           SegmentInfos segmentInfos, int maxSegmentCount, Map<SegmentInfoPerCommit,Boolean> segmentsToMerge)
-      throws CorruptIndexException, IOException;
+      throws IOException;
 
   /**
    * Determine what set of merge operations is necessary in order to expunge all
@@ -334,7 +334,7 @@
    *          the total set of segments in the index
    */
   public abstract MergeSpecification findForcedDeletesMerges(
-      SegmentInfos segmentInfos) throws CorruptIndexException, IOException;
+      SegmentInfos segmentInfos) throws IOException;
 
   /**
    * Release all resources for the policy.
Index: lucene/core/src/java/org/apache/lucene/index/NoDeletionPolicy.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/NoDeletionPolicy.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/NoDeletionPolicy.java	(working copy)
@@ -34,8 +34,8 @@
     // keep private to avoid instantiation
   }
   
-  public void onCommit(List<? extends IndexCommit> commits) throws IOException {}
+  public void onCommit(List<? extends IndexCommit> commits) {}
 
-  public void onInit(List<? extends IndexCommit> commits) throws IOException {}
+  public void onInit(List<? extends IndexCommit> commits) {}
   
 }
Index: lucene/core/src/java/org/apache/lucene/index/MultiDocsAndPositionsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/MultiDocsAndPositionsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/MultiDocsAndPositionsEnum.java	(working copy)
@@ -46,7 +46,7 @@
     return this.parent == parent;
   }
 
-  public MultiDocsAndPositionsEnum reset(final EnumWithSlice[] subs, final int numSubs) throws IOException {
+  public MultiDocsAndPositionsEnum reset(final EnumWithSlice[] subs, final int numSubs) {
     this.numSubs = numSubs;
     this.subs = new EnumWithSlice[subs.length];
     for(int i=0;i<subs.length;i++) {
Index: lucene/core/src/java/org/apache/lucene/index/MultiTerms.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/MultiTerms.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/MultiTerms.java	(working copy)
@@ -95,7 +95,7 @@
   }
 
   @Override
-  public long size() throws IOException {
+  public long size() {
     return -1;
   }
 
Index: lucene/core/src/java/org/apache/lucene/index/SingleTermsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/SingleTermsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/SingleTermsEnum.java	(working copy)
@@ -39,7 +39,7 @@
    * After calling the constructor the enumeration is already pointing to the term,
    * if it exists.
    */
-  public SingleTermsEnum(TermsEnum tenum, BytesRef termText) throws IOException {
+  public SingleTermsEnum(TermsEnum tenum, BytesRef termText) {
     super(tenum);
     singleRef = termText;
     setInitialSeekTerm(termText);
Index: lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushControl.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushControl.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushControl.java	(working copy)
@@ -16,7 +16,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import java.io.IOException;
+
 import java.util.ArrayList;
 import java.util.IdentityHashMap;
 import java.util.List;
@@ -570,21 +570,13 @@
     try {
       for (DocumentsWriterPerThread dwpt : flushQueue) {
         doAfterFlush(dwpt);
-        try {
-          dwpt.abort();
-        } catch (IOException ex) {
-          // continue
-        }
+        dwpt.abort();
       }
       for (BlockedFlush blockedFlush : blockedFlushes) {
         flushingWriters
             .put(blockedFlush.dwpt, Long.valueOf(blockedFlush.bytes));
         doAfterFlush(blockedFlush.dwpt);
-        try {
-          blockedFlush.dwpt.abort();
-        } catch (IOException ex) {
-          // continue
-        }
+        blockedFlush.dwpt.abort();
       }
     } finally {
       fullFlush = false;
Index: lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java	(working copy)
@@ -38,7 +38,7 @@
   
   /** called only from static open() methods */
   StandardDirectoryReader(Directory directory, AtomicReader[] readers, IndexWriter writer,
-    SegmentInfos sis, int termInfosIndexDivisor, boolean applyAllDeletes) throws IOException {
+    SegmentInfos sis, int termInfosIndexDivisor, boolean applyAllDeletes) {
     super(directory, readers);
     this.writer = writer;
     this.segmentInfos = sis;
@@ -48,10 +48,10 @@
 
   /** called from DirectoryReader.open(...) methods */
   static DirectoryReader open(final Directory directory, final IndexCommit commit,
-                          final int termInfosIndexDivisor) throws CorruptIndexException, IOException {
+                          final int termInfosIndexDivisor) throws IOException {
     return (DirectoryReader) new SegmentInfos.FindSegmentsFile(directory) {
       @Override
-      protected Object doBody(String segmentFileName) throws CorruptIndexException, IOException {
+      protected Object doBody(String segmentFileName) throws IOException {
         SegmentInfos sis = new SegmentInfos();
         sis.read(directory, segmentFileName);
         final SegmentReader[] readers = new SegmentReader[sis.size()];
@@ -226,12 +226,12 @@
   }
 
   @Override
-  protected DirectoryReader doOpenIfChanged() throws CorruptIndexException, IOException {
+  protected DirectoryReader doOpenIfChanged() throws IOException {
     return doOpenIfChanged(null);
   }
 
   @Override
-  protected DirectoryReader doOpenIfChanged(final IndexCommit commit) throws CorruptIndexException, IOException {
+  protected DirectoryReader doOpenIfChanged(final IndexCommit commit) throws IOException {
     ensureOpen();
 
     // If we were obtained by writer.getReader(), re-ask the
@@ -244,7 +244,7 @@
   }
 
   @Override
-  protected DirectoryReader doOpenIfChanged(IndexWriter writer, boolean applyAllDeletes) throws CorruptIndexException, IOException {
+  protected DirectoryReader doOpenIfChanged(IndexWriter writer, boolean applyAllDeletes) throws IOException {
     ensureOpen();
     if (writer == this.writer && applyAllDeletes == this.applyAllDeletes) {
       return doOpenFromWriter(null);
@@ -253,7 +253,7 @@
     }
   }
 
-  private DirectoryReader doOpenFromWriter(IndexCommit commit) throws CorruptIndexException, IOException {
+  private DirectoryReader doOpenFromWriter(IndexCommit commit) throws IOException {
     if (commit != null) {
       throw new IllegalArgumentException("a reader obtained from IndexWriter.getReader() cannot currently accept a commit");
     }
@@ -273,7 +273,7 @@
     return reader;
   }
 
-  private synchronized DirectoryReader doOpenNoWriter(IndexCommit commit) throws CorruptIndexException, IOException {
+  private synchronized DirectoryReader doOpenNoWriter(IndexCommit commit) throws IOException {
 
     if (commit == null) {
       if (isCurrent()) {
@@ -290,7 +290,7 @@
 
     return (DirectoryReader) new SegmentInfos.FindSegmentsFile(directory) {
       @Override
-      protected Object doBody(String segmentFileName) throws CorruptIndexException, IOException {
+      protected Object doBody(String segmentFileName) throws IOException {
         final SegmentInfos infos = new SegmentInfos();
         infos.read(directory, segmentFileName);
         return doOpenIfChanged(infos, null);
@@ -298,7 +298,7 @@
     }.run(commit);
   }
 
-  synchronized DirectoryReader doOpenIfChanged(SegmentInfos infos, IndexWriter writer) throws CorruptIndexException, IOException {
+  synchronized DirectoryReader doOpenIfChanged(SegmentInfos infos, IndexWriter writer) throws IOException {
     return StandardDirectoryReader.open(directory, writer, infos, getSequentialSubReaders(), termInfosIndexDivisor);
   }
 
@@ -309,7 +309,7 @@
   }
 
   @Override
-  public boolean isCurrent() throws CorruptIndexException, IOException {
+  public boolean isCurrent() throws IOException {
     ensureOpen();
     if (writer == null || writer.isClosed()) {
       // Fully read the segments file: this ensures that it's
Index: lucene/core/src/java/org/apache/lucene/index/ParallelAtomicReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/ParallelAtomicReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/ParallelAtomicReader.java	(working copy)
@@ -162,7 +162,7 @@
     }
     
     @Override
-    public String next() throws IOException {
+    public String next() {
       if (keys.hasNext()) {
         currentField = keys.next();
       } else {
@@ -172,7 +172,7 @@
     }
     
     @Override
-    public Terms terms() throws IOException {
+    public Terms terms() {
       return fields.terms(currentField);
     }
     
@@ -185,22 +185,22 @@
     ParallelFields() {
     }
     
-    void addField(String fieldName, Terms terms) throws IOException {
+    void addField(String fieldName, Terms terms) {
       fields.put(fieldName, terms);
     }
     
     @Override
-    public FieldsEnum iterator() throws IOException {
+    public FieldsEnum iterator() {
       return new ParallelFieldsEnum(this);
     }
     
     @Override
-    public Terms terms(String field) throws IOException {
+    public Terms terms(String field) {
       return fields.get(field);
     }
     
     @Override
-    public int size() throws IOException {
+    public int size() {
       return fields.size();
     }
   }
@@ -249,7 +249,7 @@
   }
   
   @Override
-  public void document(int docID, StoredFieldVisitor visitor) throws CorruptIndexException, IOException {
+  public void document(int docID, StoredFieldVisitor visitor) throws IOException {
     ensureOpen();
     for (final AtomicReader reader: storedFieldsReaders) {
       reader.document(docID, visitor);
Index: lucene/core/src/java/org/apache/lucene/index/MultiReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/MultiReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/MultiReader.java	(working copy)
@@ -45,7 +45,7 @@
   * <p>Note that all subreaders are closed if this Multireader is closed.</p>
   * @param subReaders set of (sub)readers
   */
-  public MultiReader(IndexReader... subReaders) throws IOException {
+  public MultiReader(IndexReader... subReaders) {
     this(subReaders, true);
   }
 
@@ -55,7 +55,7 @@
    * @param closeSubReaders indicates whether the subreaders should be closed
    * when this MultiReader is closed
    */
-  public MultiReader(IndexReader[] subReaders, boolean closeSubReaders) throws IOException {
+  public MultiReader(IndexReader[] subReaders, boolean closeSubReaders) {
     super(subReaders.clone());
     this.closeSubReaders = closeSubReaders;
     if (!closeSubReaders) {
Index: lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java	(working copy)
@@ -420,7 +420,7 @@
    */ 
   @Override
   public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos)
-      throws CorruptIndexException, IOException {
+      throws IOException {
     final List<SegmentInfoPerCommit> segments = segmentInfos.asList();
     final int numSegments = segments.size();
 
Index: lucene/core/src/java/org/apache/lucene/index/DirectoryReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/DirectoryReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/DirectoryReader.java	(working copy)
@@ -56,10 +56,9 @@
   /** Returns a IndexReader reading the index in the given
    *  Directory
    * @param directory the index directory
-   * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public static DirectoryReader open(final Directory directory) throws CorruptIndexException, IOException {
+  public static DirectoryReader open(final Directory directory) throws IOException {
     return StandardDirectoryReader.open(directory, null, DEFAULT_TERMS_INDEX_DIVISOR);
   }
   
@@ -76,10 +75,9 @@
    *  memory usage, at the expense of higher latency when
    *  loading a TermInfo.  The default value is 1.  Set this
    *  to -1 to skip loading the terms index entirely.
-   * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public static DirectoryReader open(final Directory directory, int termInfosIndexDivisor) throws CorruptIndexException, IOException {
+  public static DirectoryReader open(final Directory directory, int termInfosIndexDivisor) throws IOException {
     return StandardDirectoryReader.open(directory, null, termInfosIndexDivisor);
   }
   
@@ -102,17 +100,16 @@
    *
    * @lucene.experimental
    */
-  public static DirectoryReader open(final IndexWriter writer, boolean applyAllDeletes) throws CorruptIndexException, IOException {
+  public static DirectoryReader open(final IndexWriter writer, boolean applyAllDeletes) throws IOException {
     return writer.getReader(applyAllDeletes);
   }
 
   /** Expert: returns an IndexReader reading the index in the given
    *  {@link IndexCommit}.
    * @param commit the commit point to open
-   * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public static DirectoryReader open(final IndexCommit commit) throws CorruptIndexException, IOException {
+  public static DirectoryReader open(final IndexCommit commit) throws IOException {
     return StandardDirectoryReader.open(commit.getDirectory(), commit, DEFAULT_TERMS_INDEX_DIVISOR);
   }
 
@@ -129,10 +126,9 @@
    *  memory usage, at the expense of higher latency when
    *  loading a TermInfo.  The default value is 1.  Set this
    *  to -1 to skip loading the terms index entirely.
-   * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
-  public static DirectoryReader open(final IndexCommit commit, int termInfosIndexDivisor) throws CorruptIndexException, IOException {
+  public static DirectoryReader open(final IndexCommit commit, int termInfosIndexDivisor) throws IOException {
     return StandardDirectoryReader.open(commit.getDirectory(), commit, termInfosIndexDivisor);
   }
 
@@ -311,9 +307,8 @@
    * Returns <code>true</code> if an index exists at the specified directory.
    * @param  directory the directory to check for an index
    * @return <code>true</code> if an index exists; <code>false</code> otherwise
-   * @throws IOException if there is a problem with accessing the index
    */
-  public static boolean indexExists(Directory directory) throws IOException {
+  public static boolean indexExists(Directory directory) {
     try {
       new SegmentInfos().read(directory);
       return true;
@@ -331,7 +326,7 @@
    * Subclasses of {@code DirectoryReader} should take care to not allow
    * modification of this internal array, e.g. {@link #doOpenIfChanged()}.
    */
-  protected DirectoryReader(Directory directory, AtomicReader[] segmentReaders) throws CorruptIndexException, IOException {
+  protected DirectoryReader(Directory directory, AtomicReader[] segmentReaders) {
     super(segmentReaders);
     this.directory = directory;
   }
@@ -348,32 +343,29 @@
    * If this reader does not support reopen, return {@code null}, so
    * client code is happy. This should be consistent with {@link #isCurrent}
    * (should always return {@code true}) if reopen is not supported.
-   * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    * @return null if there are no changes; else, a new
    * DirectoryReader instance.
    */
-  protected abstract DirectoryReader doOpenIfChanged() throws CorruptIndexException, IOException;
+  protected abstract DirectoryReader doOpenIfChanged() throws IOException;
 
   /** Implement this method to support {@link #openIfChanged(DirectoryReader,IndexCommit)}.
    * If this reader does not support reopen from a specific {@link IndexCommit},
    * throw {@link UnsupportedOperationException}.
-   * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    * @return null if there are no changes; else, a new
    * DirectoryReader instance.
    */
-  protected abstract DirectoryReader doOpenIfChanged(final IndexCommit commit) throws CorruptIndexException, IOException;
+  protected abstract DirectoryReader doOpenIfChanged(final IndexCommit commit) throws IOException;
 
   /** Implement this method to support {@link #openIfChanged(DirectoryReader,IndexWriter,boolean)}.
    * If this reader does not support reopen from {@link IndexWriter},
    * throw {@link UnsupportedOperationException}.
-   * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    * @return null if there are no changes; else, a new
    * DirectoryReader instance.
    */
-  protected abstract DirectoryReader doOpenIfChanged(IndexWriter writer, boolean applyAllDeletes) throws CorruptIndexException, IOException;
+  protected abstract DirectoryReader doOpenIfChanged(IndexWriter writer, boolean applyAllDeletes) throws IOException;
 
   /**
    * Version number when this IndexReader was opened.
@@ -407,16 +399,15 @@
    * {@link #openIfChanged} to get a new reader that sees the
    * changes.</p>
    *
-   * @throws CorruptIndexException if the index is corrupt
    * @throws IOException           if there is a low-level IO error
    */
-  public abstract boolean isCurrent() throws CorruptIndexException, IOException;
+  public abstract boolean isCurrent() throws IOException;
 
   /**
    * Expert: return the IndexCommit that this reader has opened.
    * <p/>
    * @lucene.experimental
    */
-  public abstract IndexCommit getIndexCommit() throws CorruptIndexException, IOException;
+  public abstract IndexCommit getIndexCommit() throws IOException;
 
 }
Index: lucene/core/src/java/org/apache/lucene/index/NoMergeScheduler.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/NoMergeScheduler.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/NoMergeScheduler.java	(working copy)
@@ -42,5 +42,5 @@
   public void close() {}
 
   @Override
-  public void merge(IndexWriter writer) throws CorruptIndexException, IOException {}
+  public void merge(IndexWriter writer) {}
 }
Index: lucene/core/src/java/org/apache/lucene/index/MultiFieldsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/MultiFieldsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/MultiFieldsEnum.java	(working copy)
@@ -110,7 +110,7 @@
     final int index;
     String current;
 
-    public FieldsEnumWithSlice(FieldsEnum fields, ReaderSlice slice, int index) throws IOException {
+    public FieldsEnumWithSlice(FieldsEnum fields, ReaderSlice slice, int index) {
       this.slice = slice;
       this.index = index;
       assert slice.length >= 0: "length=" + slice.length;
Index: lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java	(working copy)
@@ -118,11 +118,10 @@
    * the Directory, incref the files they reference, call
    * the policy to let it delete commits.  This will remove
    * any files not referenced by any of the commits.
-   * @throws CorruptIndexException if the index is corrupt
    * @throws IOException if there is a low-level IO error
    */
   public IndexFileDeleter(Directory directory, IndexDeletionPolicy policy, SegmentInfos segmentInfos,
-                          InfoStream infoStream, IndexWriter writer) throws CorruptIndexException, IOException {
+                          InfoStream infoStream, IndexWriter writer) throws IOException {
     this.infoStream = infoStream;
     this.writer = writer;
 
@@ -469,14 +468,14 @@
     }
   }
 
-  void incRef(Collection<String> files) throws IOException {
+  void incRef(Collection<String> files) {
     assert locked();
     for(final String file : files) {
       incRef(file);
     }
   }
 
-  void incRef(String fileName) throws IOException {
+  void incRef(String fileName) {
     assert locked();
     RefCount rc = getRefCount(fileName);
     if (infoStream.isEnabled("IFD")) {
@@ -661,7 +660,7 @@
     }
 
     @Override
-    public Collection<String> getFileNames() throws IOException {
+    public Collection<String> getFileNames() {
       return files;
     }
 
Index: lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriter.java	(working copy)
@@ -114,10 +114,10 @@
   }
 
   @Override
-  void finishDocument(TermsHash termsHash) throws IOException {
+  void finishDocument(TermsHash termsHash) {
   }
 
   @Override
-  void startDocument() throws IOException {
+  void startDocument() {
   }
 }
Index: lucene/core/src/java/org/apache/lucene/index/SegmentReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/SegmentReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/SegmentReader.java	(working copy)
@@ -89,7 +89,7 @@
   // SegmentReader and using the provided in-memory
   // liveDocs.  Used by IndexWriter to provide a new NRT
   // reader:
-  SegmentReader(SegmentInfoPerCommit si, SegmentCoreReaders core, Bits liveDocs, int numDocs) throws IOException {
+  SegmentReader(SegmentInfoPerCommit si, SegmentCoreReaders core, Bits liveDocs, int numDocs) {
     this.si = si;
     this.core = core;
     core.incRef();
@@ -131,7 +131,7 @@
   }
   
   @Override
-  public void document(int docID, StoredFieldVisitor visitor) throws CorruptIndexException, IOException {
+  public void document(int docID, StoredFieldVisitor visitor) throws IOException {
     if (docID < 0 || docID >= maxDoc()) {       
       throw new IllegalArgumentException("docID must be >= 0 and < maxDoc=" + maxDoc() + " (got docID=" + docID + ")");
     }
@@ -139,7 +139,7 @@
   }
 
   @Override
-  public Fields fields() throws IOException {
+  public Fields fields() {
     ensureOpen();
     return core.fields;
   }
Index: lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java	(working copy)
@@ -76,7 +76,7 @@
   boolean hasPayloads;
 
   @Override
-  void skippingLongTerm() throws IOException {}
+  void skippingLongTerm() {}
 
   public int compareTo(FreqProxTermsWriterPerField other) {
     return fieldInfo.name.compareTo(other.fieldInfo.name);
@@ -326,7 +326,7 @@
    * instances) found in this field and serialize them
    * into a single RAM segment. */
   void flush(String fieldName, FieldsConsumer consumer,  final SegmentWriteState state)
-    throws CorruptIndexException, IOException {
+    throws IOException {
 
     if (!fieldInfo.isIndexed()) {
       return; // nothing to flush, don't bother the codec with the unindexed field
Index: lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java	(working copy)
@@ -75,7 +75,7 @@
   }
 
   @Override
-  public Fields fields() throws IOException {
+  public Fields fields() {
     ensureOpen();
     return fields;
   }
@@ -117,7 +117,7 @@
   }
 
   @Override
-  public void document(int docID, StoredFieldVisitor visitor) throws CorruptIndexException, IOException {
+  public void document(int docID, StoredFieldVisitor visitor) throws IOException {
     ensureOpen();
     in.document(docID, visitor);
   }
Index: lucene/core/src/java/org/apache/lucene/index/MergeScheduler.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/MergeScheduler.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/MergeScheduler.java	(working copy)
@@ -29,10 +29,8 @@
 public abstract class MergeScheduler {
 
   /** Run the merges provided by {@link IndexWriter#getNextMerge()}. */
-  public abstract void merge(IndexWriter writer)
-    throws CorruptIndexException, IOException;
+  public abstract void merge(IndexWriter writer) throws IOException;
 
   /** Close this MergeScheduler. */
-  public abstract void close()
-    throws CorruptIndexException, IOException;
+  public abstract void close() throws IOException;
 }
Index: lucene/core/src/java/org/apache/lucene/index/StoredFieldsConsumer.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/StoredFieldsConsumer.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/StoredFieldsConsumer.java	(working copy)
@@ -126,7 +126,7 @@
     assert docWriter.writer.testPoint("StoredFieldsWriter.finishDocument end");
   }
 
-  public void addField(IndexableField field, FieldInfo fieldInfo) throws IOException {
+  public void addField(IndexableField field, FieldInfo fieldInfo) {
     if (numStoredFields == storedFields.length) {
       int newSize = ArrayUtil.oversize(numStoredFields + 1, RamUsageEstimator.NUM_BYTES_OBJECT_REF);
       IndexableField[] newArray = new IndexableField[newSize];
Index: lucene/core/src/java/org/apache/lucene/index/MultiDocsEnum.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/MultiDocsEnum.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/MultiDocsEnum.java	(working copy)
@@ -42,7 +42,7 @@
     subDocsEnum = new DocsEnum[subReaderCount];
   }
 
-  MultiDocsEnum reset(final EnumWithSlice[] subs, final int numSubs) throws IOException {
+  MultiDocsEnum reset(final EnumWithSlice[] subs, final int numSubs) {
     this.numSubs = numSubs;
 
     this.subs = new EnumWithSlice[subs.length];
Index: lucene/core/src/java/org/apache/lucene/index/IndexReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/IndexReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/IndexReader.java	(working copy)
@@ -316,7 +316,7 @@
    *  simply want to load all fields, use {@link
    *  #document(int)}.  If you want to load a subset, use
    *  {@link DocumentStoredFieldVisitor}.  */
-  public abstract void document(int docID, StoredFieldVisitor visitor) throws CorruptIndexException, IOException;
+  public abstract void document(int docID, StoredFieldVisitor visitor) throws IOException;
   
   /**
    * Returns the stored fields of the <code>n</code><sup>th</sup>
@@ -340,7 +340,7 @@
   // TODO: we need a separate StoredField, so that the
   // Document returned here contains that class not
   // IndexableField
-  public final Document document(int docID) throws CorruptIndexException, IOException {
+  public final Document document(int docID) throws IOException {
     final DocumentStoredFieldVisitor visitor = new DocumentStoredFieldVisitor();
     document(docID, visitor);
     return visitor.getDocument();
@@ -351,7 +351,7 @@
    * fields.  Note that this is simply sugar for {@link
    * DocumentStoredFieldVisitor#DocumentStoredFieldVisitor(Set)}.
    */
-  public final Document document(int docID, Set<String> fieldsToLoad) throws CorruptIndexException, IOException {
+  public final Document document(int docID, Set<String> fieldsToLoad) throws IOException {
     final DocumentStoredFieldVisitor visitor = new DocumentStoredFieldVisitor(fieldsToLoad);
     document(docID, visitor);
     return visitor.getDocument();
Index: lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java	(working copy)
@@ -135,7 +135,7 @@
    *  updating the index files) and must discard all
    *  currently buffered docs.  This resets our state,
    *  discarding any docs added since last flush. */
-  void abort() throws IOException {
+  void abort() {
     hasAborted = aborting = true;
     try {
       if (infoStream.isEnabled("DWPT")) {
@@ -352,7 +352,7 @@
     return docCount;
   }
   
-  private void finishDocument(Term delTerm) throws IOException {
+  private void finishDocument(Term delTerm) {
     /*
      * here we actually finish the document in two steps 1. push the delete into
      * the queue and update our slice. 2. increment the DWPT private document
@@ -412,7 +412,7 @@
   }
 
   /** Reset after a flush */
-  private void doAfterFlush() throws IOException {
+  private void doAfterFlush() {
     segmentInfo = null;
     consumer.doAfterFlush();
     directory.getCreatedFiles().clear();
Index: lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java	(working copy)
@@ -134,7 +134,7 @@
   
   final Codec codec;
   DocumentsWriter(Codec codec, LiveIndexWriterConfig config, Directory directory, IndexWriter writer, FieldNumbers globalFieldNumbers,
-      BufferedDeletesStream bufferedDeletesStream) throws IOException {
+      BufferedDeletesStream bufferedDeletesStream) {
     this.codec = codec;
     this.directory = directory;
     this.indexWriter = writer;
@@ -200,7 +200,7 @@
    *  updating the index files) and must discard all
    *  currently buffered docs.  This resets our state,
    *  discarding any docs added since last flush. */
-  synchronized void abort() throws IOException {
+  synchronized void abort() {
     boolean success = false;
     synchronized (this) {
       deleteQueue.clear();
@@ -219,8 +219,6 @@
           if (perThread.isActive()) { // we might be closed
             try {
               perThread.dwpt.abort();
-            } catch (IOException ex) {
-              // continue
             } finally {
               perThread.dwpt.checkAndResetHasAborted();
               flushControl.doOnAbort(perThread);
@@ -276,7 +274,7 @@
     flushControl.setClosed();
   }
 
-  private boolean preUpdate() throws CorruptIndexException, IOException {
+  private boolean preUpdate() throws IOException {
     ensureOpen();
     boolean maybeMerge = false;
     if (flushControl.anyStalledThreads() || flushControl.numQueuedFlushes() > 0) {
@@ -325,7 +323,7 @@
   }
 
   boolean updateDocuments(final Iterable<? extends Iterable<? extends IndexableField>> docs, final Analyzer analyzer,
-                          final Term delTerm) throws CorruptIndexException, IOException {
+                          final Term delTerm) throws IOException {
     boolean maybeMerge = preUpdate();
 
     final ThreadState perThread = flushControl.obtainAndLock();
@@ -356,7 +354,7 @@
   }
 
   boolean updateDocument(final Iterable<? extends IndexableField> doc, final Analyzer analyzer,
-      final Term delTerm) throws CorruptIndexException, IOException {
+      final Term delTerm) throws IOException {
 
     boolean maybeMerge = preUpdate();
 
Index: lucene/core/src/java/org/apache/lucene/index/MergeState.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/index/MergeState.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/index/MergeState.java	(working copy)
@@ -247,7 +247,7 @@
      * @lucene.internal */
     static final MergeState.CheckAbort NONE = new MergeState.CheckAbort(null, null) {
       @Override
-      public void work(double units) throws MergePolicy.MergeAbortedException {
+      public void work(double units) {
         // do nothing
       }
     };
Index: lucene/core/src/java/org/apache/lucene/store/VerifyingLockFactory.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/store/VerifyingLockFactory.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/store/VerifyingLockFactory.java	(working copy)
@@ -69,8 +69,7 @@
     }
 
     @Override
-    public synchronized boolean obtain(long lockWaitTimeout)
-      throws LockObtainFailedException, IOException {
+    public synchronized boolean obtain(long lockWaitTimeout) throws IOException {
       boolean obtained = lock.obtain(lockWaitTimeout);
       if (obtained)
         verify((byte) 1);
@@ -78,8 +77,7 @@
     }
 
     @Override
-    public synchronized boolean obtain()
-      throws LockObtainFailedException, IOException {
+    public synchronized boolean obtain() throws IOException {
       return lock.obtain();
     }
 
@@ -105,7 +103,7 @@
    * @param port the port {@link LockVerifyServer} is
             listening on
   */
-  public VerifyingLockFactory(byte id, LockFactory lf, String host, int port) throws IOException {
+  public VerifyingLockFactory(byte id, LockFactory lf, String host, int port) {
     this.id = id;
     this.lf = lf;
     this.host = host;
Index: lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java	(working copy)
@@ -94,13 +94,13 @@
       }
 
       @Override
-      public IndexInput openSlice(String sliceDescription, long offset, long length) throws IOException {
+      public IndexInput openSlice(String sliceDescription, long offset, long length) {
         return new NIOFSIndexInput(sliceDescription, path, descriptor, descriptor.getChannel(), offset,
             length, BufferedIndexInput.bufferSize(context), getReadChunkSize());
       }
 
       @Override
-      public IndexInput openFullSlice() throws IOException {
+      public IndexInput openFullSlice() {
         return openSlice("full-slice", 0, descriptor.length);
       }
     };
@@ -117,7 +117,7 @@
       channel = file.getChannel();
     }
     
-    public NIOFSIndexInput(String sliceDescription, File path, Descriptor file, FileChannel fc, long off, long length, int bufferSize, int chunkSize) throws IOException {
+    public NIOFSIndexInput(String sliceDescription, File path, Descriptor file, FileChannel fc, long off, long length, int bufferSize, int chunkSize) {
       super("NIOFSIndexInput(" + sliceDescription + " in path=\"" + path + "\" slice=" + off + ":" + (off+length) + ")", file, off, length, bufferSize, chunkSize);
       channel = fc;
       isClone = true;
Index: lucene/core/src/java/org/apache/lucene/store/CompoundFileDirectory.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/store/CompoundFileDirectory.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/store/CompoundFileDirectory.java	(working copy)
@@ -265,7 +265,7 @@
   }
   
   @Override
-  public void sync(Collection<String> names) throws IOException {
+  public void sync(Collection<String> names) {
     throw new UnsupportedOperationException();
   }
   
@@ -288,7 +288,7 @@
     }
     return new IndexInputSlicer() {
       @Override
-      public void close() throws IOException {
+      public void close() {
       }
       
       @Override
Index: lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java	(working copy)
@@ -78,7 +78,7 @@
    * @throws NullPointerException
    *           if <code>dir</code> or <code>name</code> is null
    */
-  CompoundFileWriter(Directory dir, String name) throws IOException {
+  CompoundFileWriter(Directory dir, String name) {
     if (dir == null)
       throw new NullPointerException("directory cannot be null");
     if (name == null)
@@ -174,7 +174,7 @@
    * output stream.
    */
   private final long copyFileEntry(IndexOutput dataOut, FileEntry fileEntry)
-      throws IOException, MergeAbortedException {
+      throws IOException {
     final IndexInput is = fileEntry.dir.openInput(fileEntry.file, IOContext.READONCE);
     boolean success = false;
     try {
Index: lucene/core/src/java/org/apache/lucene/store/Lock.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/store/Lock.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/store/Lock.java	(working copy)
@@ -67,7 +67,7 @@
    *         out of bounds
    * @throws IOException if obtain() throws IOException
    */
-  public boolean obtain(long lockWaitTimeout) throws LockObtainFailedException, IOException {
+  public boolean obtain(long lockWaitTimeout) throws IOException {
     failureReason = null;
     boolean locked = obtain();
     if (lockWaitTimeout < 0 && lockWaitTimeout != LOCK_OBTAIN_WAIT_FOREVER)
@@ -128,7 +128,7 @@
      * be obtained
      * @throws IOException if {@link Lock#obtain} throws IOException
      */
-    public Object run() throws LockObtainFailedException, IOException {
+    public Object run() throws IOException {
       boolean locked = false;
       try {
          locked = lock.obtain(lockWaitTimeout);
Index: lucene/core/src/java/org/apache/lucene/store/Directory.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/store/Directory.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/store/Directory.java	(working copy)
@@ -230,7 +230,7 @@
         base.close();
       }
       @Override
-      public IndexInput openFullSlice() throws IOException {
+      public IndexInput openFullSlice() {
         return (IndexInput) base.clone();
       }
     };
Index: lucene/core/src/java/org/apache/lucene/store/SimpleFSDirectory.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/store/SimpleFSDirectory.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/store/SimpleFSDirectory.java	(working copy)
@@ -73,13 +73,13 @@
       }
 
       @Override
-      public IndexInput openSlice(String sliceDescription, long offset, long length) throws IOException {
+      public IndexInput openSlice(String sliceDescription, long offset, long length) {
         return new SimpleFSIndexInput("SimpleFSIndexInput(" + sliceDescription + " in path=\"" + file.getPath() + "\" slice=" + offset + ":" + (offset+length) + ")", descriptor, offset,
             length, BufferedIndexInput.bufferSize(context), getReadChunkSize());
       }
 
       @Override
-      public IndexInput openFullSlice() throws IOException {
+      public IndexInput openFullSlice() {
         return openSlice("full-slice", 0, descriptor.length);
       }
     };
@@ -124,7 +124,7 @@
       this.end = file.length;
     }
     
-    public SimpleFSIndexInput(String resourceDesc, Descriptor file, long off, long length, int bufferSize, int chunkSize) throws IOException {
+    public SimpleFSIndexInput(String resourceDesc, Descriptor file, long off, long length, int bufferSize, int chunkSize) {
       super(resourceDesc, bufferSize);
       this.file = file;
       this.chunkSize = chunkSize;
Index: lucene/core/src/java/org/apache/lucene/store/RAMOutputStream.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/store/RAMOutputStream.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/store/RAMOutputStream.java	(working copy)
@@ -147,7 +147,7 @@
     }
   }
 
-  private final void switchCurrentBuffer() throws IOException {
+  private final void switchCurrentBuffer() {
     if (currentBufferIndex == file.numBuffers()) {
       currentBuffer = file.addBuffer(BUFFER_SIZE);
     } else {
Index: lucene/core/src/java/org/apache/lucene/store/NativeFSLockFactory.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/store/NativeFSLockFactory.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/store/NativeFSLockFactory.java	(working copy)
@@ -63,7 +63,7 @@
    * directory itself. Be sure to create one instance for each directory
    * your create!
    */
-  public NativeFSLockFactory() throws IOException {
+  public NativeFSLockFactory() {
     this((File) null);
   }
 
@@ -73,7 +73,7 @@
    *
    * @param lockDirName where lock files are created.
    */
-  public NativeFSLockFactory(String lockDirName) throws IOException {
+  public NativeFSLockFactory(String lockDirName) {
     this(new File(lockDirName));
   }
 
@@ -83,7 +83,7 @@
    * 
    * @param lockDir where lock files are created.
    */
-  public NativeFSLockFactory(File lockDir) throws IOException {
+  public NativeFSLockFactory(File lockDir) {
     setLockDir(lockDir);
   }
 
Index: lucene/core/src/java/org/apache/lucene/store/SimpleFSLockFactory.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/store/SimpleFSLockFactory.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/store/SimpleFSLockFactory.java	(working copy)
@@ -60,7 +60,7 @@
    * directory itself. Be sure to create one instance for each directory
    * your create!
    */
-  public SimpleFSLockFactory() throws IOException {
+  public SimpleFSLockFactory() {
     this((File) null);
   }
 
@@ -68,7 +68,7 @@
    * Instantiate using the provided directory (as a File instance).
    * @param lockDir where lock files should be created.
    */
-  public SimpleFSLockFactory(File lockDir) throws IOException {
+  public SimpleFSLockFactory(File lockDir) {
     setLockDir(lockDir);
   }
 
@@ -76,7 +76,7 @@
    * Instantiate using the provided directory name (String).
    * @param lockDirName where lock files should be created.
    */
-  public SimpleFSLockFactory(String lockDirName) throws IOException {
+  public SimpleFSLockFactory(String lockDirName) {
     setLockDir(new File(lockDirName));
   }
 
Index: lucene/core/src/java/org/apache/lucene/util/packed/PackedReaderIterator.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/util/packed/PackedReaderIterator.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/util/packed/PackedReaderIterator.java	(working copy)
@@ -29,8 +29,7 @@
   // masks[n-1] masks for bottom n bits
   private final long[] masks;
 
-  public PackedReaderIterator(int valueCount, int bitsPerValue, IndexInput in)
-    throws IOException {
+  public PackedReaderIterator(int valueCount, int bitsPerValue, IndexInput in) {
     super(valueCount, bitsPerValue, in);
 
     masks = new long[bitsPerValue];
Index: lucene/core/src/java/org/apache/lucene/util/packed/DirectPackedReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/util/packed/DirectPackedReader.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/util/packed/DirectPackedReader.java	(working copy)
@@ -32,8 +32,7 @@
   // masks[n-1] masks for bottom n bits
   private final long[] masks;
 
-  public DirectPackedReader(int bitsPerValue, int valueCount, IndexInput in)
-    throws IOException {
+  public DirectPackedReader(int bitsPerValue, int valueCount, IndexInput in) {
     super(valueCount, bitsPerValue);
     this.in = in;
 
Index: lucene/core/src/java/org/apache/lucene/util/packed/Packed64SingleBlockReaderIterator.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/util/packed/Packed64SingleBlockReaderIterator.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/util/packed/Packed64SingleBlockReaderIterator.java	(working copy)
@@ -29,8 +29,7 @@
   private final long mask;
   private int position;
 
-  Packed64SingleBlockReaderIterator(int valueCount, int bitsPerValue, IndexInput in)
-      throws IOException {
+  Packed64SingleBlockReaderIterator(int valueCount, int bitsPerValue, IndexInput in) {
     super(valueCount, bitsPerValue, in);
     pending = 0;
     shift = 64;
Index: lucene/core/src/java/org/apache/lucene/util/PagedBytes.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/util/PagedBytes.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/util/PagedBytes.java	(working copy)
@@ -288,7 +288,7 @@
   }
 
   /** Copy BytesRef in */
-  public void copy(BytesRef bytes) throws IOException {
+  public void copy(BytesRef bytes) {
     int byteCount = bytes.length;
     int bytesUpto = bytes.offset;
     while (byteCount > 0) {
@@ -318,7 +318,7 @@
   /** Copy BytesRef in, setting BytesRef out to the result.
    * Do not use this if you will use freeze(true).
    * This only supports bytes.length <= blockSize */
-  public void copy(BytesRef bytes, BytesRef out) throws IOException {
+  public void copy(BytesRef bytes, BytesRef out) {
     int left = blockSize - upto;
     if (bytes.length > left || currentBlock==null) {
       if (currentBlock != null) {
@@ -374,7 +374,7 @@
 
   /** Copy bytes in, writing the length as a 1 or 2 byte
    *  vInt prefix. */
-  public long copyUsingLengthPrefix(BytesRef bytes) throws IOException {
+  public long copyUsingLengthPrefix(BytesRef bytes) {
     if (bytes.length >= 32768) {
       throw new IllegalArgumentException("max length is 32767 (got " + bytes.length + ")");
     }
@@ -488,7 +488,7 @@
     }
 
     @Override
-    public void writeBytes(byte[] b, int offset, int length) throws IOException {
+    public void writeBytes(byte[] b, int offset, int length) {
       assert b.length >= offset + length;
       if (length == 0) {
         return;
Index: lucene/core/src/java/org/apache/lucene/util/BytesRefIterator.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/util/BytesRefIterator.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/util/BytesRefIterator.java	(working copy)
@@ -50,7 +50,7 @@
   public static final BytesRefIterator EMPTY = new BytesRefIterator() {
 
     @Override
-    public BytesRef next() throws IOException {
+    public BytesRef next() {
       return null;
     }
     
Index: lucene/core/src/java/org/apache/lucene/document/Field.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/document/Field.java	(revision 1354855)
+++ lucene/core/src/java/org/apache/lucene/document/Field.java	(working copy)
@@ -469,7 +469,7 @@
         boolean used;
 
         @Override
-        public boolean incrementToken() throws IOException {
+        public boolean incrementToken() {
           if (used) {
             return false;
           }
@@ -480,7 +480,7 @@
         }
 
         @Override
-        public void reset() throws IOException {
+        public void reset() {
           used = false;
         }
       };
Index: lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/DocMakerTest.java
===================================================================
--- lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/DocMakerTest.java	(revision 1354855)
+++ lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/DocMakerTest.java	(working copy)
@@ -46,12 +46,11 @@
     private boolean finish = false;
     
     @Override
-    public void close() throws IOException {
+    public void close() {
     }
 
     @Override
-    public DocData getNextDocData(DocData docData) throws NoMoreDataException,
-        IOException {
+    public DocData getNextDocData(DocData docData) throws NoMoreDataException {
       if (finish) {
         throw new NoMoreDataException();
       }
Index: lucene/benchmark/src/test/org/apache/lucene/benchmark/BenchmarkTestCase.java
===================================================================
--- lucene/benchmark/src/test/org/apache/lucene/benchmark/BenchmarkTestCase.java	(revision 1354855)
+++ lucene/benchmark/src/test/org/apache/lucene/benchmark/BenchmarkTestCase.java	(working copy)
@@ -35,14 +35,14 @@
   private static File WORKDIR;
   
   @BeforeClass
-  public static void beforeClassBenchmarkTestCase() throws Exception {
+  public static void beforeClassBenchmarkTestCase() {
     WORKDIR = _TestUtil.getTempDir("benchmark");
     WORKDIR.delete();
     WORKDIR.mkdirs();
   }
   
   @AfterClass
-  public static void afterClassBenchmarkTestCase() throws Exception {
+  public static void afterClassBenchmarkTestCase() {
     WORKDIR = null;
   }
   
Index: lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/DocNameExtractor.java
===================================================================
--- lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/DocNameExtractor.java	(revision 1354855)
+++ lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/DocNameExtractor.java	(working copy)
@@ -52,12 +52,12 @@
     final List<String> name = new ArrayList<String>();
     searcher.getIndexReader().document(docid, new StoredFieldVisitor() {
         @Override
-        public void stringField(FieldInfo fieldInfo, String value) throws IOException {
+        public void stringField(FieldInfo fieldInfo, String value) {
           name.add(value);
         }
 
         @Override
-        public Status needsField(FieldInfo fieldInfo) throws IOException {
+        public Status needsField(FieldInfo fieldInfo) {
           if (!name.isEmpty()) {
             return Status.STOP;
           } else if (fieldInfo.name.equals(docNameField)) {
Index: lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java
===================================================================
--- lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java	(revision 1354855)
+++ lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java	(working copy)
@@ -174,7 +174,7 @@
     return iwConf;
   }
   
-  public static IndexWriter configureWriter(Config config, PerfRunData runData, OpenMode mode, IndexCommit commit) throws CorruptIndexException, LockObtainFailedException, IOException {
+  public static IndexWriter configureWriter(Config config, PerfRunData runData, OpenMode mode, IndexCommit commit) throws IOException {
     IndexWriterConfig iwc = createWriterConfig(config, runData, mode, commit);
     String infoStreamVal = config.get("writer.info.stream", null);
     if (infoStreamVal != null) {
Index: lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupingSearchTest.java
===================================================================
--- lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupingSearchTest.java	(revision 1354855)
+++ lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupingSearchTest.java	(working copy)
@@ -195,7 +195,7 @@
     }
   }
 
-  private GroupingSearch createRandomGroupingSearch(String groupField, Sort groupSort, int docsInGroup, boolean canUseIDV) throws IOException {
+  private GroupingSearch createRandomGroupingSearch(String groupField, Sort groupSort, int docsInGroup, boolean canUseIDV) {
     GroupingSearch groupingSearch;
     if (random().nextBoolean()) {
       ValueSource vs = new BytesRefFieldSource(groupField);
Index: lucene/grouping/src/test/org/apache/lucene/search/grouping/AllGroupHeadsCollectorTest.java
===================================================================
--- lucene/grouping/src/test/org/apache/lucene/search/grouping/AllGroupHeadsCollectorTest.java	(revision 1354855)
+++ lucene/grouping/src/test/org/apache/lucene/search/grouping/AllGroupHeadsCollectorTest.java	(working copy)
@@ -429,7 +429,7 @@
     return true;
   }
 
-  private int[] createExpectedGroupHeads(String searchTerm, GroupDoc[] groupDocs, Sort docSort, boolean sortByScoreOnly, int[] fieldIdToDocID) throws IOException {
+  private int[] createExpectedGroupHeads(String searchTerm, GroupDoc[] groupDocs, Sort docSort, boolean sortByScoreOnly, int[] fieldIdToDocID) {
     Map<BytesRef, List<GroupDoc>> groupHeads = new HashMap<BytesRef, List<GroupDoc>>();
     for (GroupDoc groupDoc : groupDocs) {
       if (!groupDoc.content.startsWith(searchTerm)) {
@@ -518,7 +518,7 @@
   }
 
   @SuppressWarnings({"unchecked","rawtypes"})
-  private AbstractAllGroupHeadsCollector<?> createRandomCollector(String groupField, Sort sortWithinGroup, boolean canUseIDV, Type valueType) throws IOException {
+  private AbstractAllGroupHeadsCollector<?> createRandomCollector(String groupField, Sort sortWithinGroup, boolean canUseIDV, Type valueType) {
     AbstractAllGroupHeadsCollector<? extends AbstractAllGroupHeadsCollector.GroupHead> collector;
     if (random().nextBoolean()) {
       ValueSource vs = new BytesRefFieldSource(groupField);
Index: lucene/grouping/src/test/org/apache/lucene/search/grouping/AllGroupsCollectorTest.java
===================================================================
--- lucene/grouping/src/test/org/apache/lucene/search/grouping/AllGroupsCollectorTest.java	(revision 1354855)
+++ lucene/grouping/src/test/org/apache/lucene/search/grouping/AllGroupsCollectorTest.java	(working copy)
@@ -33,7 +33,6 @@
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 
-import java.io.IOException;
 import java.util.HashMap;
 
 public class AllGroupsCollectorTest extends LuceneTestCase {
@@ -127,7 +126,7 @@
     }
   }
 
-  private AbstractAllGroupsCollector<?> createRandomCollector(String groupField, boolean canUseIDV) throws IOException {
+  private AbstractAllGroupsCollector<?> createRandomCollector(String groupField, boolean canUseIDV) {
     AbstractAllGroupsCollector<?> selected;
     if (random().nextBoolean() && canUseIDV) {
       boolean diskResident = random().nextBoolean();
Index: lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java
===================================================================
--- lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java	(revision 1354855)
+++ lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java	(working copy)
@@ -57,9 +57,8 @@
    * @param groupField      The field to group by
    * @param sortWithinGroup The sort within each group
    * @return an <code>AbstractAllGroupHeadsCollector</code> instance based on the supplied arguments
-   * @throws IOException If I/O related errors occur
    */
-  public static AbstractAllGroupHeadsCollector<?> create(String groupField, Sort sortWithinGroup) throws IOException {
+  public static AbstractAllGroupHeadsCollector<?> create(String groupField, Sort sortWithinGroup) {
     return create(groupField, sortWithinGroup, DEFAULT_INITIAL_SIZE);
   }
 
@@ -73,9 +72,8 @@
    *                    the total number of expected unique groups. Be aware that the heap usage is
    *                    4 bytes * initialSize.
    * @return an <code>AbstractAllGroupHeadsCollector</code> instance based on the supplied arguments
-   * @throws IOException If I/O related errors occur
    */
-  public static AbstractAllGroupHeadsCollector<?> create(String groupField, Sort sortWithinGroup, int initialSize) throws IOException {
+  public static AbstractAllGroupHeadsCollector<?> create(String groupField, Sort sortWithinGroup, int initialSize) {
     boolean sortAllScore = true;
     boolean sortAllFieldValue = true;
 
@@ -113,7 +111,7 @@
 
     private Scorer scorer;
 
-    GeneralAllGroupHeadsCollector(String groupField, Sort sortWithinGroup) throws IOException {
+    GeneralAllGroupHeadsCollector(String groupField, Sort sortWithinGroup) {
       super(groupField, sortWithinGroup.getSort().length);
       this.sortWithinGroup = sortWithinGroup;
       groups = new HashMap<BytesRef, GroupHead>();
@@ -409,7 +407,7 @@
       BytesRef[] sortValues;
       int[] sortOrds;
 
-      private GroupHead(int doc, BytesRef groupValue) throws IOException {
+      private GroupHead(int doc, BytesRef groupValue) {
         super(groupValue, doc + readerContext.docBase);
         sortValues = new BytesRef[sortsIndex.length];
         sortOrds = new int[sortsIndex.length];
Index: lucene/grouping/src/java/org/apache/lucene/search/grouping/dv/DVAllGroupHeadsCollector.java
===================================================================
--- lucene/grouping/src/java/org/apache/lucene/search/grouping/dv/DVAllGroupHeadsCollector.java	(revision 1354855)
+++ lucene/grouping/src/java/org/apache/lucene/search/grouping/dv/DVAllGroupHeadsCollector.java	(working copy)
@@ -65,10 +65,9 @@
    * @param type The {@link Type} which is used to select a concrete implementation.
    * @param diskResident Whether the values to group by should be disk resident
    * @return an <code>AbstractAllGroupHeadsCollector</code> instance based on the supplied arguments
-   * @throws IOException If I/O related errors occur
    */
   @SuppressWarnings("unchecked")
-  public static <T extends AbstractAllGroupHeadsCollector.GroupHead<?>> DVAllGroupHeadsCollector<T> create(String groupField, Sort sortWithinGroup, DocValues.Type type, boolean diskResident) throws IOException {
+  public static <T extends AbstractAllGroupHeadsCollector.GroupHead<?>> DVAllGroupHeadsCollector<T> create(String groupField, Sort sortWithinGroup, DocValues.Type type, boolean diskResident) {
     switch (type) {
       case VAR_INTS:
       case FIXED_INTS_8:
@@ -162,7 +161,7 @@
     private final Sort sortWithinGroup;
     private final Map<Comparable<?>, GroupHead> groups;
 
-    GeneralAllGroupHeadsCollector(String groupField, DocValues.Type valueType, Sort sortWithinGroup, boolean diskResident) throws IOException {
+    GeneralAllGroupHeadsCollector(String groupField, DocValues.Type valueType, Sort sortWithinGroup, boolean diskResident) {
       super(groupField, valueType, sortWithinGroup.getSort().length, diskResident);
       this.sortWithinGroup = sortWithinGroup;
       groups = new HashMap<Comparable<?>, GroupHead>();
@@ -218,7 +217,7 @@
 
       private DocValues.SortedSource source;
 
-      SortedBR(String groupField, DocValues.Type valueType, Sort sortWithinGroup, boolean diskResident) throws IOException {
+      SortedBR(String groupField, DocValues.Type valueType, Sort sortWithinGroup, boolean diskResident) {
         super(groupField, valueType, sortWithinGroup, diskResident);
       }
 
@@ -244,7 +243,7 @@
 
       private DocValues.Source source;
 
-      BR(String groupField, DocValues.Type valueType, Sort sortWithinGroup, boolean diskResident) throws IOException {
+      BR(String groupField, DocValues.Type valueType, Sort sortWithinGroup, boolean diskResident) {
         super(groupField, valueType, sortWithinGroup, diskResident);
       }
 
@@ -266,7 +265,7 @@
 
       private DocValues.Source source;
 
-      Lng(String groupField, DocValues.Type valueType, Sort sortWithinGroup, boolean diskResident) throws IOException {
+      Lng(String groupField, DocValues.Type valueType, Sort sortWithinGroup, boolean diskResident) {
         super(groupField, valueType, sortWithinGroup, diskResident);
       }
 
@@ -287,7 +286,7 @@
 
       private DocValues.Source source;
 
-      Dbl(String groupField, DocValues.Type valueType, Sort sortWithinGroup, boolean diskResident) throws IOException {
+      Dbl(String groupField, DocValues.Type valueType, Sort sortWithinGroup, boolean diskResident) {
         super(groupField, valueType, sortWithinGroup, diskResident);
       }
 
Index: lucene/misc/src/java/org/apache/lucene/index/BalancedSegmentMergePolicy.java
===================================================================
--- lucene/misc/src/java/org/apache/lucene/index/BalancedSegmentMergePolicy.java	(revision 1354855)
+++ lucene/misc/src/java/org/apache/lucene/index/BalancedSegmentMergePolicy.java	(working copy)
@@ -245,7 +245,7 @@
   
   @Override
   public MergeSpecification findForcedDeletesMerges(SegmentInfos infos)
-    throws CorruptIndexException, IOException {
+    throws IOException {
     final int numSegs = infos.size();
     final int numLargeSegs = (numSegs < _numLargeSegments ? numSegs : _numLargeSegments);
     MergeSpecification spec = null;
@@ -335,7 +335,7 @@
     }      
   }
   
-  private OneMerge findOneSegmentToExpunge(SegmentInfos infos, int maxNumSegments) throws IOException {
+  private OneMerge findOneSegmentToExpunge(SegmentInfos infos, int maxNumSegments) {
     int expungeCandidate = -1;
     int maxDelCount = 0;
     
Index: lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java
===================================================================
--- lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java	(revision 1354855)
+++ lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java	(working copy)
@@ -180,11 +180,11 @@
    */
   private static final class FakeDeleteIndexReader extends BaseCompositeReader<FakeDeleteAtomicIndexReader> {
 
-    public FakeDeleteIndexReader(IndexReader reader) throws IOException {
+    public FakeDeleteIndexReader(IndexReader reader) {
       super(initSubReaders(reader));
     }
     
-    private static FakeDeleteAtomicIndexReader[] initSubReaders(IndexReader reader) throws IOException {
+    private static FakeDeleteAtomicIndexReader[] initSubReaders(IndexReader reader) {
       final List<AtomicReaderContext> leaves = reader.getTopReaderContext().leaves();
       final FakeDeleteAtomicIndexReader[] subs = new FakeDeleteAtomicIndexReader[leaves.size()];
       int i = 0;
@@ -206,7 +206,7 @@
     }
 
     @Override
-    protected void doClose() throws IOException {}
+    protected void doClose() {}
 
     // no need to override numDocs/hasDeletions,
     // as we pass the subreaders directly to IW.addIndexes().
Index: lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java
===================================================================
--- lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java	(revision 1354855)
+++ lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java	(working copy)
@@ -199,7 +199,7 @@
     //}
 
     @Override
-    public void flush() throws IOException {
+    public void flush() {
       // TODO -- I don't think this method is necessary?
     }
 
@@ -257,7 +257,7 @@
     }
 
     @Override
-    public long length() throws IOException {
+    public long length() {
       return fileLength + bufferPos;
     }
 
Index: solr/test-framework/src/java/org/apache/solr/util/TestHarness.java
===================================================================
--- solr/test-framework/src/java/org/apache/solr/util/TestHarness.java	(revision 1354855)
+++ solr/test-framework/src/java/org/apache/solr/util/TestHarness.java	(working copy)
@@ -294,7 +294,7 @@
    * @see LocalSolrQueryRequest
    */
   public String validateQuery(SolrQueryRequest req, String... tests)
-    throws IOException, Exception {
+    throws Exception {
                 
     String res = query(req);
     return validateXPath(res, tests);
@@ -309,7 +309,7 @@
    * @exception IOException if there is a problem writing the XML
    * @see LocalSolrQueryRequest
    */
-  public String query(SolrQueryRequest req) throws IOException, Exception {
+  public String query(SolrQueryRequest req) throws Exception {
     return query(req.getParams().get(CommonParams.QT), req);
   }
 
@@ -323,7 +323,7 @@
    * @exception IOException if there is a problem writing the XML
    * @see LocalSolrQueryRequest
    */
-  public String query(String handler, SolrQueryRequest req) throws IOException, Exception {
+  public String query(String handler, SolrQueryRequest req) throws Exception {
     try {
       SolrQueryResponse rsp = new SolrQueryResponse();
       SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, rsp));
Index: solr/test-framework/src/java/org/apache/solr/util/AbstractSolrTestCase.java
===================================================================
--- solr/test-framework/src/java/org/apache/solr/util/AbstractSolrTestCase.java	(revision 1354855)
+++ solr/test-framework/src/java/org/apache/solr/util/AbstractSolrTestCase.java	(working copy)
@@ -105,12 +105,12 @@
     RuleChain.outerRule(new SystemPropertiesRestoreRule());
   
   @BeforeClass
-  public static void beforeClassAbstractSolrTestCase() throws Exception {
+  public static void beforeClassAbstractSolrTestCase() {
     SolrTestCaseJ4.startTrackingSearchers();
   }
   
   @AfterClass
-  public static void afterClassAbstractSolrTestCase() throws Exception {
+  public static void afterClassAbstractSolrTestCase() {
     SolrTestCaseJ4.endTrackingSearchers();
   }
   
@@ -458,7 +458,7 @@
   }
 
   /** @see SolrTestCaseJ4#getFile */
-  public static File getFile(String name) throws IOException {
+  public static File getFile(String name) {
     return SolrTestCaseJ4.getFile(name);
   }
 }
Index: solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java
===================================================================
--- solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java	(revision 1354855)
+++ solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java	(working copy)
@@ -87,7 +87,7 @@
    * @param expected expected JSON Object
    * @param delta tollerance allowed in comparing float/double values
    */
-  public static String matchObj(String path, Object input, Object expected, double delta) throws Exception {
+  public static String matchObj(String path, Object input, Object expected, double delta) {
     CollectionTester tester = new CollectionTester(input,delta);
     boolean reversed = path.startsWith("!");
     String positivePath = reversed ? path.substring(1) : path;
Index: solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
===================================================================
--- solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java	(revision 1354855)
+++ solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java	(working copy)
@@ -67,7 +67,7 @@
 
   @BeforeClass 
   @SuppressWarnings("unused")
-  private static void beforeClass() throws Exception {
+  private static void beforeClass() {
     setupLogging();
     startTrackingSearchers();
     startTrackingZkClients();
@@ -325,7 +325,7 @@
     log.info("####initCore end");
   }
 
-  public static void createCore() throws Exception {
+  public static void createCore() {
     solrConfig = TestHarness.createConfig(testSolrHome, getSolrConfigFile());
     h = new TestHarness( dataDir.getAbsolutePath(),
             solrConfig,
@@ -356,7 +356,7 @@
    * to delete dataDir, unless the system property "solr.test.leavedatadir"
    * is set.
    */
-  public static void deleteCore() throws Exception {
+  public static void deleteCore() {
     log.info("###deleteCore" );
     if (h != null) { h.close(); }
     if (dataDir != null) {
Index: solr/core/src/test/org/apache/solr/TestRandomFaceting.java
===================================================================
--- solr/core/src/test/org/apache/solr/TestRandomFaceting.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/TestRandomFaceting.java	(working copy)
@@ -80,7 +80,7 @@
     model = indexDocs(types, model, ndocs);
   }
 
-  void deleteSomeDocs() throws Exception {
+  void deleteSomeDocs() {
     Random rand = random();
     int percent = rand.nextInt(100);
     if (model == null) return;
Index: solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
===================================================================
--- solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java	(working copy)
@@ -429,7 +429,7 @@
     
   }
   
-  public void testAliasing() throws IOException, Exception {
+  public void testAliasing() throws Exception {
     String oner = "*[count(//doc)=1]";
     String twor = "*[count(//doc)=2]";
     String nor = "*[count(//doc)=0]";
@@ -462,12 +462,12 @@
     
   }
   
-  public void testAliasingBoost() throws IOException, Exception {
+  public void testAliasingBoost() throws Exception {
     assertQ(req("defType","edismax", "q","Zapp Pig", "qf","myalias", "f.myalias.qf","name trait_ss^0.5"), "//result/doc[1]/str[@name='id']=42", "//result/doc[2]/str[@name='id']=47");//doc 42 should score higher than 46
     assertQ(req("defType","edismax", "q","Zapp Pig", "qf","myalias^100 name", "f.myalias.qf","trait_ss^0.5"), "//result/doc[1]/str[@name='id']=47", "//result/doc[2]/str[@name='id']=42");//Now the order should be inverse
   }
   
-  public void testCyclicAliasing() throws IOException, Exception {
+  public void testCyclicAliasing() throws Exception {
     try {
       h.query(req("defType","edismax", "q","ignore_exception", "qf","who", "f.who.qf","name","f.name.qf","who"));
       fail("Simple cyclic alising");
Index: solr/core/src/test/org/apache/solr/search/TestLRUCache.java
===================================================================
--- solr/core/src/test/org/apache/solr/search/TestLRUCache.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/search/TestLRUCache.java	(working copy)
@@ -63,7 +63,7 @@
       doTestPercentageAutowarm(10, 10, new int[]{10}, new int[]{1, 5, 9, 100, 200, 300, 400, 800, 899, 900});
   }
   
-  private void doTestPercentageAutowarm(int limit, int percentage, int[] hits, int[]misses) throws IOException {
+  private void doTestPercentageAutowarm(int limit, int percentage, int[] hits, int[]misses) {
     LRUCache<Object, Object> lruCache = new LRUCache<Object, Object>();
     Map<String, String> params = new HashMap<String, String>();
     params.put("size", String.valueOf(limit));
@@ -126,7 +126,7 @@
     CacheRegenerator cr = new CacheRegenerator() {
       @SuppressWarnings("unchecked")
       public boolean regenerateItem(SolrIndexSearcher newSearcher, SolrCache newCache,
-                                    SolrCache oldCache, Object oldKey, Object oldVal) throws IOException {
+                                    SolrCache oldCache, Object oldKey, Object oldVal) {
         newCache.put(oldKey, oldVal);
         return true;
       }
Index: solr/core/src/test/org/apache/solr/search/TestSort.java
===================================================================
--- solr/core/src/test/org/apache/solr/search/TestSort.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/search/TestSort.java	(working copy)
@@ -203,7 +203,7 @@
       for (int i=0; i<qiter; i++) {
         Filter filt = new Filter() {
           @Override
-          public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException {
+          public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) {
             return BitsFilteredDocIdSet.wrap(randSet(context.reader().maxDoc()), acceptDocs);
           }
         };
Index: solr/core/src/test/org/apache/solr/search/TestRecovery.java
===================================================================
--- solr/core/src/test/org/apache/solr/search/TestRecovery.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/search/TestRecovery.java	(working copy)
@@ -60,7 +60,7 @@
   }
   
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     if (savedFactory == null) {
       System.clearProperty("solr.directoryFactory");
     } else {
Index: solr/core/src/test/org/apache/solr/search/TestFastLRUCache.java
===================================================================
--- solr/core/src/test/org/apache/solr/search/TestFastLRUCache.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/search/TestFastLRUCache.java	(working copy)
@@ -83,7 +83,7 @@
     doTestPercentageAutowarm(100, 0, new int[]{}, new int[]{1, 10, 25, 51, 55, 60, 70, 80, 99, 100, 200, 300});
   }
   
-  private void doTestPercentageAutowarm(int limit, int percentage, int[] hits, int[]misses) throws IOException {
+  private void doTestPercentageAutowarm(int limit, int percentage, int[] hits, int[]misses) {
     FastLRUCache<Object, Object> fastCache = new FastLRUCache<Object, Object>();
     Map<String, String> params = new HashMap<String, String>();
     params.put("size", String.valueOf(limit));
@@ -177,7 +177,7 @@
   private CacheRegenerator createCodeRegenerator() {
     CacheRegenerator cr = new CacheRegenerator() {
         public boolean regenerateItem(SolrIndexSearcher newSearcher, SolrCache newCache,
-                                      SolrCache oldCache, Object oldKey, Object oldVal) throws IOException {
+                                      SolrCache oldCache, Object oldKey, Object oldVal) {
           newCache.put(oldKey, oldVal);
           return true;
         }
Index: solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyNothingIsSafeTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyNothingIsSafeTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyNothingIsSafeTest.java	(working copy)
@@ -43,11 +43,11 @@
 public class ChaosMonkeyNothingIsSafeTest extends FullSolrCloudTest {
 
   @BeforeClass
-  public static void beforeSuperClass() throws Exception {
+  public static void beforeSuperClass() {
   }
   
   @AfterClass
-  public static void afterSuperClass() throws Exception {
+  public static void afterSuperClass() {
   }
   
   @Before
@@ -159,8 +159,7 @@
     }
   }
 
-  private void waitForThingsToLevelOut() throws KeeperException,
-      InterruptedException, Exception, IOException, URISyntaxException {
+  private void waitForThingsToLevelOut() throws Exception {
     int cnt = 0;
     boolean retry = false;
     do {
@@ -210,7 +209,7 @@
     private List<SolrServer> clients;  
     
     public FullThrottleStopableIndexingThread(List<SolrServer> clients,
-        int startI, boolean doDeletes) throws MalformedURLException {
+        int startI, boolean doDeletes) {
       super(startI, doDeletes);
       setName("FullThrottleStopableIndexingThread");
       setDaemon(true);
@@ -282,18 +281,14 @@
         if (clientIndex > clients.size() - 1) {
           clientIndex = 0;
         }
-        try {
-          suss.shutdownNow();
-          suss = new ConcurrentUpdateSolrServer(
-              ((HttpSolrServer) clients.get(clientIndex)).getBaseURL(),
-              httpClient, 30, 3) {
-            public void handleError(Throwable ex) {
-              log.warn("suss error", ex);
-            }
-          };
-        } catch (MalformedURLException e1) {
-          e1.printStackTrace();
-        }
+        suss.shutdownNow();
+        suss = new ConcurrentUpdateSolrServer(
+            ((HttpSolrServer) clients.get(clientIndex)).getBaseURL(),
+            httpClient, 30, 3) {
+          public void handleError(Throwable ex) {
+            log.warn("suss error", ex);
+          }
+        };
       }
     }
     
Index: solr/core/src/test/org/apache/solr/cloud/RecoveryZkTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/cloud/RecoveryZkTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/cloud/RecoveryZkTest.java	(working copy)
@@ -35,12 +35,12 @@
   private StopableIndexingThread indexThread;
   private StopableIndexingThread indexThread2;
   @BeforeClass
-  public static void beforeSuperClass() throws Exception {
+  public static void beforeSuperClass() {
 
   }
   
   @AfterClass
-  public static void afterSuperClass() throws Exception {
+  public static void afterSuperClass() {
 
   }
   
Index: solr/core/src/test/org/apache/solr/cloud/TestMultiCoreConfBootstrap.java
===================================================================
--- solr/core/src/test/org/apache/solr/cloud/TestMultiCoreConfBootstrap.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/cloud/TestMultiCoreConfBootstrap.java	(working copy)
@@ -43,12 +43,12 @@
   protected static String zkDir;
   
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     createTempDir();
   }
   
   @AfterClass
-  public static void afterClass() throws IOException {
+  public static void afterClass() {
 
   }
   
Index: solr/core/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java	(working copy)
@@ -66,7 +66,7 @@
   private Initializer init2;
   
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     System.setProperty("solrcloud.skip.autorecovery", "true");
   }
   
Index: solr/core/src/test/org/apache/solr/cloud/LeaderElectionTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/cloud/LeaderElectionTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/cloud/LeaderElectionTest.java	(working copy)
@@ -51,12 +51,12 @@
   private volatile boolean stopStress = false;
   
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     createTempDir();
   }
   
   @AfterClass
-  public static void afterClass() throws InterruptedException {
+  public static void afterClass() {
 
   }
   
Index: solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java	(working copy)
@@ -48,7 +48,7 @@
   
   
   @BeforeClass
-  public static void beforeSuperClass() throws Exception {
+  public static void beforeSuperClass() {
   }
   
   public FullSolrCloudDistribCmdsTest() {
@@ -131,8 +131,8 @@
     testThatCantForwardToLeaderFails();
   }
 
-  private void testThatCantForwardToLeaderFails() throws InterruptedException,
-      Exception, TimeoutException, IOException, KeeperException {
+  private void testThatCantForwardToLeaderFails() throws
+      Exception, IOException, KeeperException {
     ZkNodeProps props = zkStateReader.getLeaderProps(DEFAULT_COLLECTION, "shard1");
     
     chaosMonkey.stopShard("shard1");
@@ -164,8 +164,8 @@
     assertTrue("A whole shard is down - some of these should fail", fails > 0);
   }
 
-  private long addTwoDocsInOneRequest(long docId) throws SolrServerException,
-      IOException, Exception {
+  private long addTwoDocsInOneRequest(long docId) throws
+      Exception {
     QueryResponse results;
     UpdateRequest uReq;
     uReq = new UpdateRequest();
@@ -192,7 +192,7 @@
     return docId;
   }
 
-  private long addUpdateDelete() throws Exception, SolrServerException,
+  private long addUpdateDelete() throws Exception,
       IOException {
     long docId = 99999999L;
     indexr("id", docId, t1, "originalcontent");
@@ -230,13 +230,13 @@
     return docId;
   }
 
-  private void testDeleteByQueryDistrib() throws Exception, SolrServerException {
+  private void testDeleteByQueryDistrib() throws Exception {
     del("*:*");
     commit();
     assertEquals(0, query(cloudClient).getResults().getNumFound());
   }
 
-  private void testIndexingWithSuss() throws MalformedURLException, Exception {
+  private void testIndexingWithSuss() throws Exception {
     ConcurrentUpdateSolrServer suss = new ConcurrentUpdateSolrServer(
         ((HttpSolrServer) clients.get(0)).getBaseURL(), 3, 1);
     
Index: solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java	(working copy)
@@ -67,7 +67,7 @@
   private ZkStateReader reader;
   
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     System.setProperty("solrcloud.skip.autorecovery", "true");
   }
   
@@ -245,7 +245,7 @@
     //Thread.sleep(100000);
   }
   
-  private String getLeader() throws InterruptedException, KeeperException {
+  private String getLeader() throws InterruptedException {
     
     ZkNodeProps props = reader.getLeaderProps("collection1", "shard1", 30000);
     String leader = props.get(ZkStateReader.NODE_NAME_PROP);
Index: solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java	(working copy)
@@ -61,7 +61,7 @@
  */
 public class FullSolrCloudTest extends AbstractDistributedZkTestCase {
   @BeforeClass
-  public static void beforeFullSolrCloudTest() throws Exception {
+  public static void beforeFullSolrCloudTest() {
     // shorten the log output more for this test type
     if (formatter != null) formatter.setShorterFormat();
   }
@@ -148,7 +148,7 @@
   }
   
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     System
         .setProperty("solr.directoryFactory", "solr.StandardDirectoryFactory");
     System.setProperty("solrcloud.update.delay", "0");
@@ -327,8 +327,7 @@
   }
   
   protected void updateMappingsFromZk(List<JettySolrRunner> jettys,
-      List<SolrServer> clients) throws Exception, IOException, KeeperException,
-      URISyntaxException {
+      List<SolrServer> clients) throws Exception {
     zkStateReader.updateCloudState(true);
     shardToClient.clear();
     shardToJetty.clear();
@@ -596,7 +595,7 @@
     
   }
   
-  private long testUpdateAndDelete() throws Exception, SolrServerException,
+  private long testUpdateAndDelete() throws Exception,
       IOException {
     long docId = 99999999L;
     indexr("id", docId, t1, "originalcontent");
@@ -632,9 +631,7 @@
     return docId;
   }
   
-  private void addNewReplica() throws Exception, InterruptedException,
-      TimeoutException, IOException, KeeperException, URISyntaxException,
-      SolrServerException {
+  private void addNewReplica() throws Exception {
     JettySolrRunner newReplica = createJettys(1).get(0);
     
     waitForRecoveriesToFinish(false);
@@ -656,8 +653,7 @@
     super.waitForRecoveriesToFinish(DEFAULT_COLLECTION, zkStateReader, verbose);
   }
   
-  private void brindDownShardIndexSomeDocsAndRecover() throws Exception,
-      SolrServerException, IOException, InterruptedException {
+  private void brindDownShardIndexSomeDocsAndRecover() throws Exception {
     SolrQuery query = new SolrQuery("*:*");
     query.set("distrib", false);
     
Index: solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java	(working copy)
@@ -392,7 +392,7 @@
   }
 
   private void testNumberOfCommitsWithCommitAfterAdd()
-      throws MalformedURLException, SolrServerException, IOException {
+      throws SolrServerException, IOException {
     long startCommits = getNumCommits((HttpSolrServer) clients.get(0));
     
     ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update");
@@ -406,7 +406,7 @@
     assertEquals(startCommits + 1L, endCommits);
   }
 
-  private Long getNumCommits(HttpSolrServer solrServer) throws MalformedURLException,
+  private Long getNumCommits(HttpSolrServer solrServer) throws
       SolrServerException, IOException {
     HttpSolrServer server = new HttpSolrServer(solrServer.getBaseURL());
     ModifiableSolrParams params = new ModifiableSolrParams();
@@ -552,15 +552,13 @@
   }
 
   private void createCollection(String collection,
-      List<SolrServer> collectionClients, String baseUrl, int num)
-      throws MalformedURLException, SolrServerException, IOException, InterruptedException {
+      List<SolrServer> collectionClients, String baseUrl, int num) {
     createCollection(collection, collectionClients, baseUrl, num, null);
   }
   
   private void createCollection(final String collection,
       List<SolrServer> collectionClients, final String baseUrl, final int num,
-      final String shardId) throws MalformedURLException, SolrServerException,
-      IOException, InterruptedException {
+      final String shardId) {
     Callable call = new Callable() {
       public Object call() {
         HttpSolrServer server;
@@ -594,8 +592,7 @@
     collectionClients.add(createNewSolrServer(collection, baseUrl));
   }
 
-  private void testMultipleCollections() throws MalformedURLException,
-      SolrServerException, IOException, Exception {
+  private void testMultipleCollections() throws Exception {
     // create another 2 collections and search across them
     createNewCollection("collection2");
     createNewCollection("collection3");
@@ -665,8 +662,7 @@
     client.add(doc);
   }
   
-  private void createNewCollection(final String collection)
-      throws MalformedURLException, SolrServerException, IOException, InterruptedException {
+  private void createNewCollection(final String collection) throws InterruptedException {
     final List<SolrServer> collectionClients = new ArrayList<SolrServer>();
     otherCollectionClients.put(collection, collectionClients);
     int unique = 0;
Index: solr/core/src/test/org/apache/solr/cloud/ChaosMonkeySafeLeaderTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/cloud/ChaosMonkeySafeLeaderTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/cloud/ChaosMonkeySafeLeaderTest.java	(working copy)
@@ -36,12 +36,12 @@
 public class ChaosMonkeySafeLeaderTest extends FullSolrCloudTest {
   
   @BeforeClass
-  public static void beforeSuperClass() throws Exception {
+  public static void beforeSuperClass() {
     
   }
   
   @AfterClass
-  public static void afterSuperClass() throws Exception {
+  public static void afterSuperClass() {
     
   }
   
@@ -119,8 +119,7 @@
     if (VERBOSE) System.out.println("control docs:" + controlClient.query(new SolrQuery("*:*")).getResults().getNumFound() + "\n\n");
   }
 
-  private void waitForThingsToLevelOut() throws KeeperException,
-      InterruptedException, Exception, IOException, URISyntaxException {
+  private void waitForThingsToLevelOut() throws Exception {
     int cnt = 0;
     boolean retry = false;
     do {
Index: solr/core/src/test/org/apache/solr/util/DOMUtilTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/util/DOMUtilTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/util/DOMUtilTest.java	(working copy)
@@ -49,7 +49,7 @@
     assertTypeAndValue( namedList, "Boolean", false );
   }
 
-  private void assertTypeAndValue( NamedList<Object> namedList, String key, Object value ) throws Exception {
+  private void assertTypeAndValue( NamedList<Object> namedList, String key, Object value ) {
     Object v = namedList.get( key );
     assertNotNull( v );
     assertEquals( key, v.getClass().getSimpleName() );
Index: solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java	(working copy)
@@ -44,13 +44,13 @@
   }
   
   @BeforeClass
-  public static void beforeClass() throws IOException {
+  public static void beforeClass() {
     System.setProperty("elevate.data.file", "elevate.xml");
     File parent = new File(TEST_HOME(), "conf");
   }
   
   @AfterClass
-  public static void afterClass() throws IOException {
+  public static void afterClass() {
     System.clearProperty("elevate.data.file");
   }
 
Index: solr/core/src/test/org/apache/solr/spelling/FileBasedSpellCheckerTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/spelling/FileBasedSpellCheckerTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/spelling/FileBasedSpellCheckerTest.java	(working copy)
@@ -54,7 +54,7 @@
   }
   
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     queryConverter = null;
   }
 
Index: solr/core/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java	(working copy)
@@ -76,7 +76,7 @@
   }
   
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     queryConverter = null;
   }
 
Index: solr/core/src/test/org/apache/solr/spelling/suggest/SuggesterTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/spelling/suggest/SuggesterTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/spelling/suggest/SuggesterTest.java	(working copy)
@@ -43,7 +43,7 @@
   }
   
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     if (savedFactory == null) {
       System.clearProperty("solr.directoryFactory");
     } else {
@@ -51,7 +51,7 @@
     }
   }
 
-  public static void addDocs() throws Exception {
+  public static void addDocs() {
     assertU(adoc("id", "1",
                  "text", "acceptable accidentally accommodate acquire"
                ));
Index: solr/core/src/test/org/apache/solr/update/TestIndexingPerformance.java
===================================================================
--- solr/core/src/test/org/apache/solr/update/TestIndexingPerformance.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/update/TestIndexingPerformance.java	(working copy)
@@ -41,12 +41,12 @@
   // TODO: fix this test to not require FSDirectory
   static String savedFactory;
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     savedFactory = System.getProperty("solr.DirectoryFactory");
     System.setProperty("solr.directoryFactory", "org.apache.solr.core.MockFSDirectoryFactory");
   }
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     if (savedFactory == null) {
       System.clearProperty("solr.directoryFactory");
     } else {
Index: solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java	(working copy)
@@ -51,7 +51,7 @@
   }
   
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     if (savedFactory == null) {
       System.clearProperty("solr.directoryFactory");
     } else {
Index: solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java	(working copy)
@@ -54,7 +54,7 @@
   static SolrRequestParsers parser;
 
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     parser = null;
   }
   
Index: solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java
===================================================================
--- solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java	(working copy)
@@ -49,12 +49,12 @@
   // TODO: fix this test to not require FSDirectory
   static String savedFactory;
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     savedFactory = System.getProperty("solr.DirectoryFactory");
     System.setProperty("solr.directoryFactory", "org.apache.solr.core.MockFSDirectoryFactory");
   }
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     if (savedFactory == null) {
       System.clearProperty("solr.directoryFactory");
     } else {
Index: solr/core/src/test/org/apache/solr/core/TestSolrXMLSerializer.java
===================================================================
--- solr/core/src/test/org/apache/solr/core/TestSolrXMLSerializer.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/core/TestSolrXMLSerializer.java	(working copy)
@@ -90,8 +90,7 @@
   }
 
   private void assertResults(byte[] bytes)
-      throws ParserConfigurationException, UnsupportedEncodingException,
-      IOException, SAXException, XPathExpressionException {
+      throws ParserConfigurationException, IOException, SAXException, XPathExpressionException {
     DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
     BufferedInputStream is = new BufferedInputStream(new ByteArrayInputStream(bytes));
     Document document;
Index: solr/core/src/test/org/apache/solr/core/RAMDirectoryFactoryTest.java
===================================================================
--- solr/core/src/test/org/apache/solr/core/RAMDirectoryFactoryTest.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/core/RAMDirectoryFactoryTest.java	(working copy)
@@ -37,7 +37,7 @@
     final Directory directory = new RAMDirectory();
     RAMDirectoryFactory factory = new RAMDirectoryFactory()  {
       @Override
-      protected Directory create(String path) throws IOException {
+      protected Directory create(String path) {
         return directory;
       }
     };
Index: solr/core/src/test/org/apache/solr/request/TestWriterPerf.java
===================================================================
--- solr/core/src/test/org/apache/solr/request/TestWriterPerf.java	(revision 1354855)
+++ solr/core/src/test/org/apache/solr/request/TestWriterPerf.java	(working copy)
@@ -86,7 +86,7 @@
 
 
   /** make sure to close req after you are done using the response */
-  public SolrQueryResponse getResponse(SolrQueryRequest req) throws IOException, Exception {
+  public SolrQueryResponse getResponse(SolrQueryRequest req) throws Exception {
     SolrQueryResponse rsp = new SolrQueryResponse();
     h.getCore().execute(h.getCore().getRequestHandler(null),req,rsp);
     if (rsp.getException() != null) {
Index: solr/core/src/java/org/apache/solr/search/BitDocSet.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/BitDocSet.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/BitDocSet.java	(working copy)
@@ -249,7 +249,7 @@
 
     return new Filter() {
       @Override
-      public DocIdSet getDocIdSet(final AtomicReaderContext context, final Bits acceptDocs) throws IOException {
+      public DocIdSet getDocIdSet(final AtomicReaderContext context, final Bits acceptDocs) {
         AtomicReader reader = context.reader();
         // all Solr DocSets that are used as filters only include live docs
         final Bits acceptDocs2 = acceptDocs == null ? null : (reader.getLiveDocs() == acceptDocs ? null : acceptDocs);
@@ -264,7 +264,7 @@
 
         return BitsFilteredDocIdSet.wrap(new DocIdSet() {
           @Override
-          public DocIdSetIterator iterator() throws IOException {
+          public DocIdSetIterator iterator() {
             return new DocIdSetIterator() {
               int pos=base-1;
               int adjustedDoc=-1;
@@ -275,13 +275,13 @@
               }
 
               @Override
-              public int nextDoc() throws IOException {
+              public int nextDoc() {
                 pos = bs.nextSetBit(pos+1);
                 return adjustedDoc = (pos>=0 && pos<max) ? pos-base : NO_MORE_DOCS;
               }
 
               @Override
-              public int advance(int target) throws IOException {
+              public int advance(int target) {
                 if (target==NO_MORE_DOCS) return adjustedDoc=NO_MORE_DOCS;
                 pos = bs.nextSetBit(target+base);
                 return adjustedDoc = (pos>=0 && pos<max) ? pos-base : NO_MORE_DOCS;
@@ -295,7 +295,7 @@
           }
 
           @Override
-          public Bits bits() throws IOException {
+          public Bits bits() {
             return new Bits() {
               @Override
               public boolean get(int index) {
Index: solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java	(working copy)
@@ -1300,14 +1300,14 @@
       if (!needScores) {
         collector = new Collector () {
           @Override
-          public void setScorer(Scorer scorer) throws IOException {
+          public void setScorer(Scorer scorer) {
           }
           @Override
-          public void collect(int doc) throws IOException {
+          public void collect(int doc) {
             numHits[0]++;
           }
           @Override
-          public void setNextReader(AtomicReaderContext context) throws IOException {
+          public void setNextReader(AtomicReaderContext context) {
           }
           @Override
           public boolean acceptsDocsOutOfOrder() {
@@ -1318,7 +1318,7 @@
         collector = new Collector() {
           Scorer scorer;
           @Override
-          public void setScorer(Scorer scorer) throws IOException {
+          public void setScorer(Scorer scorer) {
             this.scorer = scorer;
           }
           @Override
@@ -1328,7 +1328,7 @@
             if (score > topscore[0]) topscore[0]=score;            
           }
           @Override
-          public void setNextReader(AtomicReaderContext context) throws IOException {
+          public void setNextReader(AtomicReaderContext context) {
           }
           @Override
           public boolean acceptsDocsOutOfOrder() {
@@ -1441,7 +1441,7 @@
          collector = setCollector = new DocSetDelegateCollector(smallSetSize, maxDoc, new Collector() {
            Scorer scorer;
            @Override
-          public void setScorer(Scorer scorer) throws IOException {
+          public void setScorer(Scorer scorer) {
              this.scorer = scorer;
            }
            @Override
@@ -1450,7 +1450,7 @@
              if (score > topscore[0]) topscore[0]=score;
            }
            @Override
-          public void setNextReader(AtomicReaderContext context) throws IOException {
+          public void setNextReader(AtomicReaderContext context) {
            }
            @Override
           public boolean acceptsDocsOutOfOrder() {
Index: solr/core/src/java/org/apache/solr/search/SolrCache.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/SolrCache.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/SolrCache.java	(working copy)
@@ -125,7 +125,7 @@
    * Warm this cache associated with <code>searcher</code> using the <code>old</code>
    * cache object.  <code>this</code> and <code>old</code> will have the same concrete type.
    */
-  void warm(SolrIndexSearcher searcher, SolrCache<K,V> old) throws IOException;
+  void warm(SolrIndexSearcher searcher, SolrCache<K,V> old);
   // Q: an alternative to passing the searcher here would be to pass it in
   // init and have the cache implementation save it.
 
Index: solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java	(working copy)
@@ -81,7 +81,7 @@
          return valueSource.getValues(context, readerContext).getRangeScorer(readerContext.reader(), lowerVal, upperVal, includeLower, includeUpper);
        }
        @Override
-       public Bits bits() throws IOException {
+       public Bits bits() {
          return null;  // don't use random access
        }
      }, acceptDocs);
Index: solr/core/src/java/org/apache/solr/search/LFUCache.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/LFUCache.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/LFUCache.java	(working copy)
@@ -155,7 +155,7 @@
     return state;
   }
 
-  public void warm(SolrIndexSearcher searcher, SolrCache old) throws IOException {
+  public void warm(SolrIndexSearcher searcher, SolrCache old) {
     if (regenerator == null) return;
     long warmingStartTime = System.currentTimeMillis();
     LFUCache other = (LFUCache) old;
Index: solr/core/src/java/org/apache/solr/search/SortedIntDocSet.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/SortedIntDocSet.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/SortedIntDocSet.java	(working copy)
@@ -658,7 +658,7 @@
       int lastEndIdx = 0;
 
       @Override
-      public DocIdSet getDocIdSet(final AtomicReaderContext context, final Bits acceptDocs) throws IOException {
+      public DocIdSet getDocIdSet(final AtomicReaderContext context, final Bits acceptDocs) {
         AtomicReader reader = context.reader();
         // all Solr DocSets that are used as filters only include live docs
         final Bits acceptDocs2 = acceptDocs == null ? null : (reader.getLiveDocs() == acceptDocs ? null : acceptDocs);
@@ -695,7 +695,7 @@
 
         return BitsFilteredDocIdSet.wrap(new DocIdSet() {
           @Override
-          public DocIdSetIterator iterator() throws IOException {
+          public DocIdSetIterator iterator() {
             return new DocIdSetIterator() {
               int idx = startIdx;
               int adjustedDoc = -1;
@@ -706,12 +706,12 @@
               }
 
               @Override
-              public int nextDoc() throws IOException {
+              public int nextDoc() {
                 return adjustedDoc = (idx > endIdx) ? NO_MORE_DOCS : (docs[idx++] - base);
               }
 
               @Override
-              public int advance(int target) throws IOException {
+              public int advance(int target) {
                 if (idx > endIdx || target==NO_MORE_DOCS) return adjustedDoc=NO_MORE_DOCS;
                 target += base;
 
@@ -757,7 +757,7 @@
           }
 
           @Override
-          public Bits bits() throws IOException {
+          public Bits bits() {
             // random access is expensive for this set
             return null;
           }
Index: solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java	(working copy)
@@ -420,9 +420,8 @@
    * Extracts all the alised fields from the requests and adds them to up
    * @param up
    * @param tiebreaker
-   * @throws ParseException 
    */
-  private void addAliasesFromRequest(ExtendedSolrQueryParser up, float tiebreaker) throws ParseException {
+  private void addAliasesFromRequest(ExtendedSolrQueryParser up, float tiebreaker) {
     Iterator<String> it = solrParams.getParameterNamesIterator();
     while(it.hasNext()) {
       String param = it.next();
@@ -1151,7 +1150,7 @@
        return lst;
      }
 
-    private Query getQuery() throws ParseException {
+    private Query getQuery() {
       try {
 
         switch (type) {
Index: solr/core/src/java/org/apache/solr/search/TermQParserPlugin.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/TermQParserPlugin.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/TermQParserPlugin.java	(working copy)
@@ -51,7 +51,7 @@
   public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
     return new QParser(qstr, localParams, params, req) {
       @Override
-      public Query parse() throws ParseException {
+      public Query parse() {
         String fname = localParams.get(QueryParsing.F);
         FieldType ft = req.getSchema().getFieldTypeNoEx(fname);
         String val = localParams.get(QueryParsing.V);
Index: solr/core/src/java/org/apache/solr/search/LRUCache.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/LRUCache.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/LRUCache.java	(working copy)
@@ -144,7 +144,7 @@
     }
   }
 
-  public void warm(SolrIndexSearcher searcher, SolrCache<K,V> old) throws IOException {
+  public void warm(SolrIndexSearcher searcher, SolrCache<K,V> old) {
     if (regenerator==null) return;
     long warmingStartTime = System.currentTimeMillis();
     LRUCache<K,V> other = (LRUCache<K,V>)old;
Index: solr/core/src/java/org/apache/solr/search/PrefixQParserPlugin.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/PrefixQParserPlugin.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/PrefixQParserPlugin.java	(working copy)
@@ -40,7 +40,7 @@
   public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
     return new QParser(qstr, localParams, params, req) {
       @Override
-      public Query parse() throws ParseException {
+      public Query parse() {
         return new PrefixQuery(new Term(localParams.get(QueryParsing.F), localParams.get(QueryParsing.V)));
       }
     };
Index: solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/ShardResultTransformer.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/ShardResultTransformer.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/ShardResultTransformer.java	(working copy)
@@ -48,8 +48,7 @@
    * @param sortWithinGroup The sort inside a group
    * @param shard The shard address where the response originated from
    * @return native structure of the data
-   * @throws IOException If I/O related errors occur during transforming
    */
-  R transformToNative(NamedList<NamedList> shardResponse, Sort groupSort, Sort sortWithinGroup, String shard) throws IOException;
+  R transformToNative(NamedList<NamedList> shardResponse, Sort groupSort, Sort sortWithinGroup, String shard);
 
 }
Index: solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java	(working copy)
@@ -74,7 +74,7 @@
   /**
    * {@inheritDoc}
    */
-  public Map<String, Pair<Integer, Collection<SearchGroup<BytesRef>>>> transformToNative(NamedList<NamedList> shardResponse, Sort groupSort, Sort sortWithinGroup, String shard) throws IOException {
+  public Map<String, Pair<Integer, Collection<SearchGroup<BytesRef>>>> transformToNative(NamedList<NamedList> shardResponse, Sort groupSort, Sort sortWithinGroup, String shard) {
     Map<String, Pair<Integer, Collection<SearchGroup<BytesRef>>>> result = new HashMap<String, Pair<Integer, Collection<SearchGroup<BytesRef>>>>();
     for (Map.Entry<String, NamedList> command : shardResponse) {
       List<SearchGroup<BytesRef>> searchGroups = new ArrayList<SearchGroup<BytesRef>>();
Index: solr/core/src/java/org/apache/solr/search/grouping/collector/FilterCollector.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/grouping/collector/FilterCollector.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/grouping/collector/FilterCollector.java	(working copy)
@@ -36,7 +36,7 @@
   private int docBase;
   private int matches;
 
-  public FilterCollector(DocSet filter, Collector delegate) throws IOException {
+  public FilterCollector(DocSet filter, Collector delegate) {
     this.filter = filter;
     this.delegate = delegate;
   }
Index: solr/core/src/java/org/apache/solr/search/DocSetBase.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/DocSetBase.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/DocSetBase.java	(working copy)
@@ -140,7 +140,7 @@
 
     return new Filter() {
       @Override
-      public DocIdSet getDocIdSet(final AtomicReaderContext context, Bits acceptDocs) throws IOException {
+      public DocIdSet getDocIdSet(final AtomicReaderContext context, Bits acceptDocs) {
         AtomicReader reader = context.reader();
         // all Solr DocSets that are used as filters only include live docs
         final Bits acceptDocs2 = acceptDocs == null ? null : (reader.getLiveDocs() == acceptDocs ? null : acceptDocs);
@@ -155,7 +155,7 @@
 
         return BitsFilteredDocIdSet.wrap(new DocIdSet() {
           @Override
-          public DocIdSetIterator iterator() throws IOException {
+          public DocIdSetIterator iterator() {
             return new DocIdSetIterator() {
               int pos=base-1;
               int adjustedDoc=-1;
@@ -166,13 +166,13 @@
               }
 
               @Override
-              public int nextDoc() throws IOException {
+              public int nextDoc() {
                 pos = bs.nextSetBit(pos+1);
                 return adjustedDoc = (pos>=0 && pos<max) ? pos-base : NO_MORE_DOCS;
               }
 
               @Override
-              public int advance(int target) throws IOException {
+              public int advance(int target) {
                 if (target==NO_MORE_DOCS) return adjustedDoc=NO_MORE_DOCS;
                 pos = bs.nextSetBit(target+base);
                 return adjustedDoc = (pos>=0 && pos<max) ? pos-base : NO_MORE_DOCS;
@@ -186,7 +186,7 @@
           }
 
           @Override
-          public Bits bits() throws IOException {
+          public Bits bits() {
             // sparse filters should not use random access
             return null;
           }
Index: solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java	(working copy)
@@ -135,7 +135,7 @@
     private float queryWeight;
     ResponseBuilder rb;
 
-    public JoinQueryWeight(SolrIndexSearcher searcher) throws IOException {
+    public JoinQueryWeight(SolrIndexSearcher searcher) {
       this.fromSearcher = searcher;
       SolrRequestInfo info = SolrRequestInfo.getRequestInfo();
       if (info != null) {
@@ -175,7 +175,7 @@
           final RefCounted<SolrIndexSearcher> ref = fromRef;
           info.addCloseHook(new Closeable() {
             @Override
-            public void close() throws IOException {
+            public void close() {
               ref.decref();
             }
           });
@@ -183,7 +183,7 @@
 
         info.addCloseHook(new Closeable() {
           @Override
-          public void close() throws IOException {
+          public void close() {
             fromCore.close();
           }
         });
Index: solr/core/src/java/org/apache/solr/search/QueryResultKey.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/QueryResultKey.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/QueryResultKey.java	(working copy)
@@ -38,7 +38,7 @@
   private static SortField[] defaultSort = new SortField[0];
 
 
-  public QueryResultKey(Query query, List<Query> filters, Sort sort, int nc_flags) throws IOException {
+  public QueryResultKey(Query query, List<Query> filters, Sort sort, int nc_flags) {
     this.query = query;
     this.sort = sort;
     this.filters = filters;
Index: solr/core/src/java/org/apache/solr/search/QueryParsing.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/QueryParsing.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/QueryParsing.java	(working copy)
@@ -637,7 +637,7 @@
       }
     }
 
-    float getFloat() throws ParseException {
+    float getFloat() {
       eatws();
       char[] arr = new char[end - pos];
       int i;
@@ -657,7 +657,7 @@
       return Float.parseFloat(new String(arr, 0, i));
     }
 
-    Number getNumber() throws ParseException {
+    Number getNumber() {
       eatws();
       int start = pos;
       boolean flt = false;
@@ -682,7 +682,7 @@
       }
     }
 
-    double getDouble() throws ParseException {
+    double getDouble() {
       eatws();
       char[] arr = new char[end - pos];
       int i;
@@ -702,7 +702,7 @@
       return Double.parseDouble(new String(arr, 0, i));
     }
 
-    int getInt() throws ParseException {
+    int getInt() {
       eatws();
       char[] arr = new char[end - pos];
       int i;
Index: solr/core/src/java/org/apache/solr/search/FastLRUCache.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/FastLRUCache.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/FastLRUCache.java	(working copy)
@@ -136,7 +136,7 @@
     cache.setAlive(state == State.LIVE);
   }
 
-  public void warm(SolrIndexSearcher searcher, SolrCache old) throws IOException {
+  public void warm(SolrIndexSearcher searcher, SolrCache old) {
     if (regenerator == null) return;
     long warmingStartTime = System.currentTimeMillis();
     FastLRUCache other = (FastLRUCache) old;
Index: solr/core/src/java/org/apache/solr/search/ReturnFields.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/ReturnFields.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/ReturnFields.java	(working copy)
@@ -155,7 +155,7 @@
 
 
   // like getId, but also accepts dashes for legacy fields
-  String getFieldName(QueryParsing.StrParser sp) throws ParseException {
+  String getFieldName(QueryParsing.StrParser sp) {
     sp.eatws();
     int id_start = sp.pos;
     char ch;
Index: solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/ValueSourceParser.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/ValueSourceParser.java	(working copy)
@@ -529,13 +529,13 @@
     
     addParser("pi", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) {
         return new DoubleConstValueSource(Math.PI);
       }
     });
     addParser("e", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) {
         return new DoubleConstValueSource(Math.E);
       }
     });
@@ -601,28 +601,28 @@
 
     addParser("maxdoc", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) {
         return new MaxDocValueSource();
       }
     });
 
     addParser("numdocs", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) {
         return new NumDocsValueSource();
       }
     });
 
     addParser("true", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) {
         return new BoolConstValueSource(true);
       }
     });
 
     addParser("false", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) {
         return new BoolConstValueSource(false);
       }
     });
Index: solr/core/src/java/org/apache/solr/search/FieldQParserPlugin.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/FieldQParserPlugin.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/FieldQParserPlugin.java	(working copy)
@@ -42,7 +42,7 @@
   public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
     return new QParser(qstr, localParams, params, req) {
       @Override
-      public Query parse() throws ParseException {
+      public Query parse() {
         String field = localParams.get(QueryParsing.F);
         String queryText = localParams.get(QueryParsing.V);
         SchemaField sf = req.getSchema().getField(field);
Index: solr/core/src/java/org/apache/solr/search/RawQParserPlugin.java
===================================================================
--- solr/core/src/java/org/apache/solr/search/RawQParserPlugin.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/search/RawQParserPlugin.java	(working copy)
@@ -44,7 +44,7 @@
   public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
     return new QParser(qstr, localParams, params, req) {
       @Override
-      public Query parse() throws ParseException {
+      public Query parse() {
         return new TermQuery(new Term(localParams.get(QueryParsing.F), localParams.get(QueryParsing.V)));
       }
     };
Index: solr/core/src/java/org/apache/solr/cloud/ZkController.java
===================================================================
--- solr/core/src/java/org/apache/solr/cloud/ZkController.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/cloud/ZkController.java	(working copy)
@@ -463,7 +463,7 @@
    * @throws IOException 
    */
   public String readConfigName(String collection) throws KeeperException,
-      InterruptedException, IOException {
+      InterruptedException {
 
     String configName = null;
 
@@ -685,17 +685,12 @@
    * @param core
    * @param cc
    * @return whether or not a recovery was started
-   * @throws InterruptedException
-   * @throws KeeperException
-   * @throws IOException
-   * @throws ExecutionException
    */
   private boolean checkRecovery(String coreName, final CoreDescriptor desc,
       boolean recoverReloadedCores, final boolean isLeader,
       final CloudDescriptor cloudDesc, final String collection,
       final String shardZkNodeName, String shardId, ZkNodeProps leaderProps,
-      SolrCore core, CoreContainer cc) throws InterruptedException,
-      KeeperException, IOException, ExecutionException {
+      SolrCore core, CoreContainer cc) {
     if (SKIP_AUTO_RECOVERY) {
       log.warn("Skipping recovery according to sys prop solrcloud.skip.autorecovery");
       return false;
@@ -814,7 +809,7 @@
     zkClient.printLayoutToStdOut();
   }
 
-  public void createCollectionZkNode(CloudDescriptor cd) throws KeeperException, InterruptedException, IOException {
+  public void createCollectionZkNode(CloudDescriptor cd) throws KeeperException, InterruptedException {
     String collection = cd.getCollectionName();
     
     log.info("Check for collection zkNode:" + collection);
@@ -943,8 +938,7 @@
     return zkStateReader;
   }
 
-  private String doGetShardIdProcess(String coreName, CloudDescriptor descriptor)
-      throws InterruptedException {
+  private String doGetShardIdProcess(String coreName, CloudDescriptor descriptor) {
     final String shardZkNodeName = getNodeName() + "_" + coreName;
     int retryCount = 120;
     while (retryCount-- > 0) {
@@ -996,11 +990,7 @@
     String shardZkNodeName = getCoreNodeName(cd);
     if (cd.getCloudDescriptor().getShardId() == null && needsToBeAssignedShardId(cd, zkStateReader.getCloudState(), shardZkNodeName)) {
       String shardId;
-      try {
-        shardId = doGetShardIdProcess(cd.getName(), cd.getCloudDescriptor());
-      } catch (InterruptedException e) {
-        throw new SolrException(ErrorCode.SERVER_ERROR, "Interrupted");
-      }
+      shardId = doGetShardIdProcess(cd.getName(), cd.getCloudDescriptor());
       cd.getCloudDescriptor().setShardId(shardId);
     }
 
Index: solr/core/src/java/org/apache/solr/cloud/Overseer.java
===================================================================
--- solr/core/src/java/org/apache/solr/cloud/Overseer.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/cloud/Overseer.java	(working copy)
@@ -156,8 +156,7 @@
     }
 
     private CloudState processMessage(CloudState cloudState,
-        final ZkNodeProps message, final String operation)
-        throws KeeperException, InterruptedException {
+        final ZkNodeProps message, final String operation) {
       if ("state".equals(operation)) {
         cloudState = updateState(cloudState, message);
       } else if ("deletecore".equals(operation)) {
@@ -197,10 +196,8 @@
       }
       /**
        * Try to assign core to the cluster. 
-       * @throws KeeperException 
-       * @throws InterruptedException 
        */
-      private CloudState updateState(CloudState state, final ZkNodeProps message) throws KeeperException, InterruptedException {
+      private CloudState updateState(CloudState state, final ZkNodeProps message) {
         final String collection = message.get(ZkStateReader.COLLECTION_PROP);
         final String zkCoreNodeName = message.get(ZkStateReader.NODE_NAME_PROP) + "_" + message.get(ZkStateReader.CORE_NAME_PROP);
         final Integer numShards = message.get(ZkStateReader.NUM_SHARDS_PROP)!=null?Integer.parseInt(message.get(ZkStateReader.NUM_SHARDS_PROP)):null;
@@ -379,7 +376,7 @@
      }
   }
   
-  public Overseer(final ZkStateReader reader, final String id) throws KeeperException, InterruptedException {
+  public Overseer(final ZkStateReader reader, final String id) {
     log.info("Overseer (id=" + id + ") starting");
     createOverseerNode(reader.getZkClient());
     //launch cluster state updater thread
Index: solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java
===================================================================
--- solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java	(working copy)
@@ -17,14 +17,11 @@
  * limitations under the License.
  */
 
-import java.io.IOException;
-import java.net.MalformedURLException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.http.client.HttpClient;
-import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.HttpClientUtil;
 import org.apache.solr.client.solrj.impl.HttpSolrServer;
 import org.apache.solr.client.solrj.request.CoreAdminRequest.RequestRecovery;
@@ -160,8 +157,7 @@
   }
   
   private boolean syncWithReplicas(ZkController zkController, SolrCore core,
-      ZkNodeProps props, String collection, String shardId)
-      throws MalformedURLException, SolrServerException, IOException {
+      ZkNodeProps props, String collection, String shardId) {
     List<ZkCoreNodeProps> nodes = zkController.getZkStateReader()
         .getReplicaProps(collection, shardId,
             props.get(ZkStateReader.NODE_NAME_PROP),
@@ -191,8 +187,7 @@
   }
   
   private void syncToMe(ZkController zkController, String collection,
-      String shardId, ZkNodeProps leaderProps) throws MalformedURLException,
-      SolrServerException, IOException {
+      String shardId, ZkNodeProps leaderProps) {
     
     // sync everyone else
     // TODO: we should do this in parallel at least
Index: solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
===================================================================
--- solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java	(working copy)
@@ -162,8 +162,7 @@
     }
   }
 
-  private void commitOnLeader(String leaderUrl) throws MalformedURLException,
-      SolrServerException, IOException {
+  private void commitOnLeader(String leaderUrl) throws SolrServerException, IOException {
     HttpSolrServer server = new HttpSolrServer(leaderUrl);
     server.setConnectionTimeout(30000);
     server.setSoTimeout(30000);
@@ -176,7 +175,7 @@
   }
 
   private void sendPrepRecoveryCmd(String leaderBaseUrl,
-      String leaderCoreName) throws MalformedURLException, SolrServerException,
+      String leaderCoreName) throws SolrServerException,
       IOException {
     HttpSolrServer server = new HttpSolrServer(leaderBaseUrl);
     server.setConnectionTimeout(45000);
@@ -430,7 +429,7 @@
   }
 
   private Future<RecoveryInfo> replay(UpdateLog ulog)
-      throws InterruptedException, ExecutionException, TimeoutException {
+      throws InterruptedException, ExecutionException {
     Future<RecoveryInfo> future = ulog.applyBufferedUpdates();
     if (future == null) {
       // no replay needed\
Index: solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
===================================================================
--- solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java	(working copy)
@@ -202,9 +202,8 @@
    * @param tokenStream document text CachingTokenStream
    * @param fieldName The name of the field
    * @param request The SolrQueryRequest
-   * @throws IOException 
    */
-  private QueryScorer getSpanQueryScorer(Query query, String fieldName, TokenStream tokenStream, SolrQueryRequest request) throws IOException {
+  private QueryScorer getSpanQueryScorer(Query query, String fieldName, TokenStream tokenStream, SolrQueryRequest request) {
     boolean reqFieldMatch = request.getParams().getFieldBool(fieldName, HighlightParams.FIELD_MATCH, false);
     Boolean highlightMultiTerm = request.getParams().getBool(HighlightParams.HIGHLIGHT_MULTI_TERM, true);
     if(highlightMultiTerm == null) {
Index: solr/core/src/java/org/apache/solr/util/SystemIdResolver.java
===================================================================
--- solr/core/src/java/org/apache/solr/util/SystemIdResolver.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/util/SystemIdResolver.java	(working copy)
@@ -96,7 +96,7 @@
     };
   }
   
-  URI resolveRelativeURI(String baseURI, String systemId) throws IOException,URISyntaxException {
+  URI resolveRelativeURI(String baseURI, String systemId) throws URISyntaxException {
     URI uri;
     
     // special case for backwards compatibility: if relative systemId starts with "/" (we convert that to an absolute solrres:-URI)
Index: solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java	(working copy)
@@ -480,7 +480,7 @@
   private SentinelIntSet ordSet; //the key half of the map
   private BytesRef[] termValues;//the value half of the map
 
-  public ElevationComparatorSource(final QueryElevationComponent.ElevationObj elevations) throws IOException {
+  public ElevationComparatorSource(final QueryElevationComponent.ElevationObj elevations) {
     this.elevations = elevations;
     int size = elevations.ids.size();
     ordSet = new SentinelIntSet(size, -1);
@@ -506,7 +506,7 @@
         bottomVal = values[slot];
       }
 
-      private int docVal(int doc) throws IOException {
+      private int docVal(int doc) {
         if (ordSet.size() > 0) {
           int slot = ordSet.find(doc);
           if (slot >= 0) {
@@ -519,12 +519,12 @@
       }
 
       @Override
-      public int compareBottom(int doc) throws IOException {
+      public int compareBottom(int doc) {
         return bottomVal - docVal(doc);
       }
 
       @Override
-      public void copy(int slot, int doc) throws IOException {
+      public void copy(int slot, int doc) {
         values[slot] = docVal(doc);
       }
 
@@ -562,7 +562,7 @@
       }
 
       @Override
-      public int compareDocToValue(int doc, Integer valueObj) throws IOException {
+      public int compareDocToValue(int doc, Integer valueObj) {
         final int value = valueObj.intValue();
         final int docValue = docVal(doc);
         return docValue - value;  // values will be small enough that there is no overflow concern
Index: solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java	(working copy)
@@ -156,7 +156,7 @@
   
 
   @Override
-  public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception, ParseException, InstantiationException, IllegalAccessException
+  public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception
   {
     // int sleep = req.getParams().getInt("sleep",0);
     // if (sleep > 0) {log.error("SLEEPING for " + sleep);  Thread.sleep(sleep);}
Index: solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java	(working copy)
@@ -252,22 +252,22 @@
     // once we find it...
     final StoredFieldVisitor getUniqValue = new StoredFieldVisitor() {
       @Override 
-      public void stringField(FieldInfo fieldInfo, String value) throws IOException {
+      public void stringField(FieldInfo fieldInfo, String value) {
         uniqValues.add(value);
       }
 
       @Override 
-      public void intField(FieldInfo fieldInfo, int value) throws IOException {
+      public void intField(FieldInfo fieldInfo, int value) {
         uniqValues.add(Integer.toString(value));
       }
 
       @Override 
-      public void longField(FieldInfo fieldInfo, long value) throws IOException {
+      public void longField(FieldInfo fieldInfo, long value) {
         uniqValues.add(Long.toString(value));
       }
 
       @Override
-      public Status needsField(FieldInfo fieldInfo) throws IOException {
+      public Status needsField(FieldInfo fieldInfo) {
         return (fieldInfo.name.equals(finalUniqFieldName)) ? Status.YES : Status.NO;
       }
     };
Index: solr/core/src/java/org/apache/solr/handler/AnalysisRequestHandlerBase.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/AnalysisRequestHandlerBase.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/AnalysisRequestHandlerBase.java	(working copy)
@@ -326,7 +326,7 @@
     }
 
     @Override
-    public boolean incrementToken() throws IOException {
+    public boolean incrementToken() {
       if (tokenIterator.hasNext()) {
         clearAttributes();
         AttributeSource next = tokenIterator.next();
Index: solr/core/src/java/org/apache/solr/handler/SnapPuller.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/SnapPuller.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/SnapPuller.java	(working copy)
@@ -663,7 +663,7 @@
   /**
    * Copy all index files from the temp index dir to the actual index. The segments_N file is copied last.
    */
-  private boolean copyIndexFiles(File tmpIdxDir, File indexDir) throws IOException {
+  private boolean copyIndexFiles(File tmpIdxDir, File indexDir) {
     String segmentsFile = null;
     List<String> copiedfiles = new ArrayList<String>();
     for (Map<String, Object> f : filesDownloaded) {
@@ -690,7 +690,7 @@
   /**
    * The conf files are copied to the tmp dir to the conf dir. A backup of the old file is maintained
    */
-  private void copyTmpConfFiles2Conf(File tmpconfDir) throws IOException {
+  private void copyTmpConfFiles2Conf(File tmpconfDir) {
     File confDir = new File(solrCore.getResourceLoader().getConfigDir());
     for (File file : tmpconfDir.listFiles()) {
       File oldFile = new File(confDir, file.getName());
Index: solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java	(working copy)
@@ -190,9 +190,7 @@
    * @since solr 1.2
    */
   void processUpdate(SolrQueryRequest req, UpdateRequestProcessor processor, XMLStreamReader parser)
-          throws XMLStreamException, IOException, FactoryConfigurationError,
-          InstantiationException, IllegalAccessException,
-          TransformerConfigurationException {
+          throws XMLStreamException, IOException, FactoryConfigurationError {
     AddUpdateCommand addCmd = null;
     SolrParams params = req.getParams();
     while (true) {
Index: solr/core/src/java/org/apache/solr/handler/SnapShooter.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/SnapShooter.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/SnapShooter.java	(working copy)
@@ -53,7 +53,7 @@
   private SolrCore solrCore;
   private SimpleFSLockFactory lockFactory;
   
-  public SnapShooter(SolrCore core, String location) throws IOException {
+  public SnapShooter(SolrCore core, String location) {
     solrCore = core;
     if (location == null) snapDir = core.getDataDir();
     else  {
Index: solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java	(working copy)
@@ -942,7 +942,7 @@
         stream.write(out);
       }
 
-      public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse response) throws IOException {
+      public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse response) {
         throw new RuntimeException("This is a binary writer , Cannot write to a characterstream");
       }
 
Index: solr/core/src/java/org/apache/solr/handler/RequestHandlerUtils.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/RequestHandlerUtils.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/RequestHandlerUtils.java	(working copy)
@@ -90,8 +90,7 @@
   /**
    * Modify UpdateCommand based on request parameters
    */
-  public static void updateCommit(CommitUpdateCommand cmd, SolrParams params) throws IOException
-  {
+  public static void updateCommit(CommitUpdateCommand cmd, SolrParams params) {
     if( params == null ) return;
 
     cmd.openSearcher = params.getBool( UpdateParams.OPEN_SEARCHER, cmd.openSearcher );
Index: solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java	(working copy)
@@ -79,8 +79,7 @@
   //--------------------------------------------------------------------------------
   //--------------------------------------------------------------------------------
   
-  private static SimpleOrderedMap<Object> getThreadInfo( ThreadInfo ti, ThreadMXBean tmbean ) throws IOException 
-  {
+  private static SimpleOrderedMap<Object> getThreadInfo( ThreadInfo ti, ThreadMXBean tmbean ) {
     SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
     long tid = ti.getThreadId();
 
Index: solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java	(working copy)
@@ -81,8 +81,7 @@
   /**
    * Get system info
    */
-  private SimpleOrderedMap<Object> getCoreInfo( SolrCore core ) throws Exception 
-  {
+  private SimpleOrderedMap<Object> getCoreInfo( SolrCore core ) {
     SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
     
     IndexSchema schema = core.getSchema();
@@ -110,8 +109,7 @@
   /**
    * Get system info
    */
-  public static SimpleOrderedMap<Object> getSystemInfo() throws Exception 
-  {
+  public static SimpleOrderedMap<Object> getSystemInfo() {
     SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
     
     OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
@@ -255,8 +253,7 @@
     return jvm;
   }
   
-  private static SimpleOrderedMap<Object> getLuceneInfo() throws Exception 
-  {
+  private static SimpleOrderedMap<Object> getLuceneInfo() {
     SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
 
     Package p = SolrCore.class.getPackage();
Index: solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
===================================================================
--- solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java	(working copy)
@@ -195,8 +195,7 @@
     rsp.setHttpCaching(false);
   }
 
-  private void showFromFileSystem(SolrQueryRequest req, SolrQueryResponse rsp)
-      throws IOException {
+  private void showFromFileSystem(SolrQueryRequest req, SolrQueryResponse rsp) {
     File adminFile = null;
     
     final SolrResourceLoader loader = req.getCore().getResourceLoader();
Index: solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
===================================================================
--- solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java	(working copy)
@@ -187,7 +187,7 @@
           new JavaBinCodec(resolver) {
 
             @Override
-            public void writeSolrDocument(SolrDocument doc) throws IOException {
+            public void writeSolrDocument(SolrDocument doc) {
               callback.streamSolrDocument( doc );
               //super.writeSolrDocument( doc, fields );
             }
Index: solr/core/src/java/org/apache/solr/update/UpdateLog.java
===================================================================
--- solr/core/src/java/org/apache/solr/update/UpdateLog.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/update/UpdateLog.java	(working copy)
@@ -632,11 +632,7 @@
   private void ensureLog() {
     if (tlog == null) {
       String newLogName = String.format(Locale.ENGLISH, LOG_FILENAME_PATTERN, TLOG_NAME, id);
-      try {
-        tlog = new TransactionLog(new File(tlogDir, newLogName), globalStrings);
-      } catch (IOException e) {
-        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Can't open new tlog!", e);
-      }
+      tlog = new TransactionLog(new File(tlogDir, newLogName), globalStrings);
     }
   }
 
Index: solr/core/src/java/org/apache/solr/update/TransactionLog.java
===================================================================
--- solr/core/src/java/org/apache/solr/update/TransactionLog.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/update/TransactionLog.java	(working copy)
@@ -129,11 +129,11 @@
   }
 
 
-  TransactionLog(File tlogFile, Collection<String> globalStrings) throws IOException {
+  TransactionLog(File tlogFile, Collection<String> globalStrings) {
     this(tlogFile, globalStrings, false);
   }
 
-  TransactionLog(File tlogFile, Collection<String> globalStrings, boolean openExisting) throws IOException {
+  TransactionLog(File tlogFile, Collection<String> globalStrings, boolean openExisting) {
     try {
       if (debug) {
         log.debug("New TransactionLog file=" + tlogFile + ", exists=" + tlogFile.exists() + ", size=" + tlogFile.length() + ", openExisting=" + openExisting);
@@ -596,7 +596,7 @@
     ChannelFastInputStream fis;
     private LogCodec codec = new LogCodec() {
       @Override
-      public SolrInputDocument readSolrInputDocument(FastInputStream dis) throws IOException {
+      public SolrInputDocument readSolrInputDocument(FastInputStream dis) {
         // Given that the SolrInputDocument is last in an add record, it's OK to just skip
         // reading it completely.
         return null;
Index: solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
===================================================================
--- solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java	(working copy)
@@ -93,7 +93,7 @@
   protected final CommitTracker commitTracker;
   protected final CommitTracker softCommitTracker;
 
-  public DirectUpdateHandler2(SolrCore core) throws IOException {
+  public DirectUpdateHandler2(SolrCore core) {
     super(core);
    
     solrCoreState = new DefaultSolrCoreState(core.getDirectoryFactory());
@@ -109,7 +109,7 @@
     softCommitTracker = new CommitTracker("Soft", core, softCommitDocsUpperBound, softCommitTimeUpperBound, true, true);
   }
   
-  public DirectUpdateHandler2(SolrCore core, UpdateHandler updateHandler) throws IOException {
+  public DirectUpdateHandler2(SolrCore core, UpdateHandler updateHandler) {
     super(core);
     if (updateHandler instanceof DirectUpdateHandler2) {
       this.solrCoreState = ((DirectUpdateHandler2) updateHandler).solrCoreState;
Index: solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
===================================================================
--- solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java	(working copy)
@@ -64,7 +64,7 @@
   }
 
   @Override
-  public  void decref(IndexWriterCloser closer) throws IOException {
+  public  void decref(IndexWriterCloser closer) {
     synchronized (this) {
       refCnt--;
       if (refCnt == 0) {
Index: solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
===================================================================
--- solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java	(working copy)
@@ -172,7 +172,7 @@
   }
   
   private void doDelete(DeleteUpdateCommand cmd, List<Node> nodes,
-      ModifiableSolrParams params) throws IOException {
+      ModifiableSolrParams params) {
     
     flushAdds(1);
     
Index: solr/core/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java
===================================================================
--- solr/core/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java	(working copy)
@@ -73,15 +73,11 @@
     this.precisionStep = precisionStep;
     this.ts = ts;
 
-   try {
-     reset(input);
-   } catch (IOException e) {
-     throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Unable to create TrieIndexTokenizer", e);
-   }
+    reset(input);
   }
 
   @Override
-  public void reset(Reader input) throws IOException {
+  public void reset(Reader input) {
    try {
       super.reset(input);
       input = super.input;
@@ -132,7 +128,7 @@
   }
 
   @Override
-  public boolean incrementToken() throws IOException {
+  public boolean incrementToken() {
     if (ts.incrementToken()) {
       ofsAtt.setOffset(startOfs, endOfs);
       return true;
Index: solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
===================================================================
--- solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java	(working copy)
@@ -246,7 +246,7 @@
 {
   private final HttpServletRequest req;
   
-  public HttpRequestContentStream( HttpServletRequest req ) throws IOException {
+  public HttpRequestContentStream( HttpServletRequest req ) {
     this.req = req;
     
     contentType = req.getContentType();
Index: solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java
===================================================================
--- solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java	(working copy)
@@ -42,7 +42,7 @@
   @Override
   public void doGet(HttpServletRequest request,
                     HttpServletResponse response)
-      throws IOException, ServletException {
+      throws IOException {
     response.setCharacterEncoding("UTF-8");
     response.setContentType("text/html");
 
@@ -76,7 +76,7 @@
   @Override
   public void doPost(HttpServletRequest request,
                      HttpServletResponse response)
-      throws IOException, ServletException {
+      throws IOException {
     doGet(request, response);
   }
 }
Index: solr/core/src/java/org/apache/solr/servlet/cache/HttpCacheHeaderUtil.java
===================================================================
--- solr/core/src/java/org/apache/solr/servlet/cache/HttpCacheHeaderUtil.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/servlet/cache/HttpCacheHeaderUtil.java	(working copy)
@@ -43,13 +43,11 @@
 
 public final class HttpCacheHeaderUtil {
   
-  public static void sendNotModified(HttpServletResponse res)
-    throws IOException {
+  public static void sendNotModified(HttpServletResponse res) {
     res.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
   }
 
-  public static void sendPreconditionFailed(HttpServletResponse res)
-    throws IOException {
+  public static void sendPreconditionFailed(HttpServletResponse res) {
     res.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
   }
   
@@ -215,8 +213,7 @@
   public static boolean doCacheHeaderValidation(final SolrQueryRequest solrReq,
                                                 final HttpServletRequest req,
                                                 final Method reqMethod,
-                                                final HttpServletResponse resp)
-    throws IOException {
+                                                final HttpServletResponse resp) {
     
     if (Method.POST==reqMethod || Method.OTHER==reqMethod) {
       return false;
@@ -244,14 +241,12 @@
    * Check for etag related conditional headers and set status 
    * 
    * @return true if no request processing is necessary and HTTP response status has been set, false otherwise.
-   * @throws IOException
    */
   @SuppressWarnings("unchecked")
   public static boolean checkETagValidators(final HttpServletRequest req,
                                             final HttpServletResponse resp,
                                             final Method reqMethod,
-                                            final String etag)
-    throws IOException {
+                                            final String etag) {
     
     // First check If-None-Match because this is the common used header
     // element by HTTP clients
@@ -281,12 +276,10 @@
    * Check for modify time related conditional headers and set status 
    * 
    * @return true if no request processing is necessary and HTTP response status has been set, false otherwise.
-   * @throws IOException
    */
   public static boolean checkLastModValidators(final HttpServletRequest req,
                                                final HttpServletResponse resp,
-                                               final long lastMod)
-    throws IOException {
+                                               final long lastMod) {
 
     try {
       // First check for If-Modified-Since because this is the common
Index: solr/core/src/java/org/apache/solr/servlet/ZookeeperInfoServlet.java
===================================================================
--- solr/core/src/java/org/apache/solr/servlet/ZookeeperInfoServlet.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/servlet/ZookeeperInfoServlet.java	(working copy)
@@ -49,13 +49,13 @@
   static final Logger log = LoggerFactory.getLogger(ZookeeperInfoServlet.class);
 
   @Override
-  public void init() throws ServletException {
+  public void init() {
   }
 
   @Override
   public void doGet(HttpServletRequest request,
                     HttpServletResponse response)
-      throws IOException, ServletException {
+      throws IOException {
     response.setCharacterEncoding("UTF-8");
     response.setContentType("application/json");
 
@@ -92,7 +92,7 @@
   @Override
   public void doPost(HttpServletRequest request,
                      HttpServletResponse response)
-      throws IOException, ServletException {
+      throws IOException {
     doGet(request, response);
   }
 
@@ -363,7 +363,7 @@
       json.write(v);
     }
 
-    boolean printZnode(JSONWriter json, String path) throws IOException {
+    boolean printZnode(JSONWriter json, String path) {
       try {
         Stat stat = new Stat();
         // Trickily, the call to zkClient.getData fills in the stat variable
Index: solr/core/src/java/org/apache/solr/core/SolrCore.java
===================================================================
--- solr/core/src/java/org/apache/solr/core/SolrCore.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/core/SolrCore.java	(working copy)
@@ -1003,12 +1003,7 @@
    * {@link org.apache.solr.request.SolrQueryRequest#getSearcher()} instead.
   */
   public RefCounted<SolrIndexSearcher> getSearcher() {
-    try {
-      return getSearcher(false,true,null);
-    } catch (IOException e) {
-      SolrException.log(log,null,e);
-      return null;
-    }
+    return getSearcher(false,true,null);
   }
 
   /**
@@ -1072,7 +1067,7 @@
   }
 
 
-  public RefCounted<SolrIndexSearcher> getSearcher(boolean forceNew, boolean returnSearcher, final Future[] waitSearcher) throws IOException {
+  public RefCounted<SolrIndexSearcher> getSearcher(boolean forceNew, boolean returnSearcher, final Future[] waitSearcher) {
     return getSearcher(forceNew, returnSearcher, waitSearcher, false);
   }
 
@@ -1219,7 +1214,7 @@
    * @param updateHandlerReopens if true, the UpdateHandler will be used when reopening a {@link SolrIndexSearcher}.
    * @throws IOException
    */
-  public RefCounted<SolrIndexSearcher> getSearcher(boolean forceNew, boolean returnSearcher, final Future[] waitSearcher, boolean updateHandlerReopens) throws IOException {
+  public RefCounted<SolrIndexSearcher> getSearcher(boolean forceNew, boolean returnSearcher, final Future[] waitSearcher, boolean updateHandlerReopens) {
     // it may take some time to open an index.... we may need to make
     // sure that two threads aren't trying to open one at the same time
     // if it isn't necessary.
@@ -1476,7 +1471,7 @@
   //
   // onDeckSearchers will also be decremented (it should have been incremented
   // as a result of opening a new searcher).
-  private void registerSearcher(RefCounted<SolrIndexSearcher> newSearcherHolder) throws IOException {
+  private void registerSearcher(RefCounted<SolrIndexSearcher> newSearcherHolder) {
     synchronized (searcherLock) {
       try {
         if (_searcher != null) {
Index: solr/core/src/java/org/apache/solr/schema/IndexSchema.java
===================================================================
--- solr/core/src/java/org/apache/solr/schema/IndexSchema.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/schema/IndexSchema.java	(working copy)
@@ -688,7 +688,7 @@
     return newArr;
   }
 
-  static SimilarityFactory readSimilarity(ResourceLoader loader, Node node) throws XPathExpressionException {
+  static SimilarityFactory readSimilarity(ResourceLoader loader, Node node) {
     if (node==null) {
       return null;
     } else {
Index: solr/core/src/java/org/apache/solr/schema/RandomSortField.java
===================================================================
--- solr/core/src/java/org/apache/solr/schema/RandomSortField.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/schema/RandomSortField.java	(working copy)
@@ -102,7 +102,7 @@
 
   private static FieldComparatorSource randomComparatorSource = new FieldComparatorSource() {
     @Override
-    public FieldComparator<Integer> newComparator(final String fieldname, final int numHits, int sortPos, boolean reversed) throws IOException {
+    public FieldComparator<Integer> newComparator(final String fieldname, final int numHits, int sortPos, boolean reversed) {
       return new FieldComparator<Integer>() {
         int seed;
         private final int[] values = new int[numHits];
@@ -119,17 +119,17 @@
         }
 
         @Override
-        public int compareBottom(int doc) throws IOException {
+        public int compareBottom(int doc) {
           return bottomVal - hash(doc+seed);
         }
 
         @Override
-        public void copy(int slot, int doc) throws IOException {
+        public void copy(int slot, int doc) {
           values[slot] = hash(doc+seed);
         }
 
         @Override
-        public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
+        public FieldComparator setNextReader(AtomicReaderContext context) {
           seed = getSeed(fieldname, context);
           return this;
         }
Index: solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java
===================================================================
--- solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java	(working copy)
@@ -214,7 +214,7 @@
       return binaryValue;
     }
     
-    public final boolean incrementToken() throws IOException {
+    public final boolean incrementToken() {
       // lazy init the iterator
       if (it == null) {
         it = cachedStates.iterator();
Index: solr/core/src/java/org/apache/solr/schema/TextField.java
===================================================================
--- solr/core/src/java/org/apache/solr/schema/TextField.java	(revision 1354855)
+++ solr/core/src/java/org/apache/solr/schema/TextField.java	(working copy)
@@ -186,11 +186,7 @@
     PositionIncrementAttribute posIncrAtt = null;
     int numTokens = 0;
 
-    try {
-      buffer.reset();
-    } catch (IOException e) {
-      throw new RuntimeException("Unable to initialize TokenStream to analyze query text", e);
-    }
+    buffer.reset();
 
     if (buffer.hasAttribute(CharTermAttribute.class)) {
       termAtt = buffer.getAttribute(CharTermAttribute.class);
Index: solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java
===================================================================
--- solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java	(revision 1354855)
+++ solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java	(working copy)
@@ -17,7 +17,6 @@
 
 package org.apache.solr.client.solrj;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -62,7 +61,7 @@
     log.info("done");
   }
 
-  private void query(int count) throws SolrServerException, IOException {
+  private void query(int count) throws SolrServerException {
     SolrServer gserver = this.getSolrServer();
     SolrQuery query = new SolrQuery("*:*");
     QueryResponse response = gserver.query(query);
Index: solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
===================================================================
--- solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java	(revision 1354855)
+++ solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java	(working copy)
@@ -540,8 +540,7 @@
   }
   
   private static Field getCUSSExceptionField(Object cs)
-      throws SecurityException, NoSuchFieldException, IllegalArgumentException,
-      IllegalAccessException {
+      throws SecurityException, NoSuchFieldException, IllegalArgumentException {
     Field field = cs.getClass().getDeclaredField("lastError");
     field.setAccessible(true);
     return field;
Index: solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java
===================================================================
--- solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java	(revision 1354855)
+++ solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java	(working copy)
@@ -54,13 +54,13 @@
   static String savedFactory;
 
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     savedFactory = System.getProperty("solr.DirectoryFactory");
     System.setProperty("solr.directoryFactory", "org.apache.solr.core.MockFSDirectoryFactory");
   }
 
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     if (savedFactory == null) {
       System.clearProperty("solr.directoryFactory");
     } else {
Index: solr/solrj/src/java/org/apache/noggit/CharArr.java
===================================================================
--- solr/solrj/src/java/org/apache/noggit/CharArr.java	(revision 1354855)
+++ solr/solrj/src/java/org/apache/noggit/CharArr.java	(working copy)
@@ -198,7 +198,7 @@
     return null;
   }
 
-  public final Appendable append(char c) throws IOException {
+  public final Appendable append(char c) {
     write(c);
     return this;
   }
Index: solr/solrj/src/java/org/apache/solr/client/solrj/impl/BinaryRequestWriter.java
===================================================================
--- solr/solrj/src/java/org/apache/solr/client/solrj/impl/BinaryRequestWriter.java	(revision 1354855)
+++ solr/solrj/src/java/org/apache/solr/client/solrj/impl/BinaryRequestWriter.java	(working copy)
@@ -84,11 +84,11 @@
         return new Long(baos.size());
       }
 
-      public InputStream getStream() throws IOException {
+      public InputStream getStream() {
         return new ByteArrayInputStream(baos.getbuf(), 0, baos.size());
       }
 
-      public Reader getReader() throws IOException {
+      public Reader getReader() {
         throw new RuntimeException("No reader available . this is a binarystream");
       }
     };
Index: solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java
===================================================================
--- solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java	(revision 1354855)
+++ solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java	(working copy)
@@ -86,10 +86,9 @@
    *          The buffer size before the documents are sent to the server
    * @param threadCount
    *          The number of background threads used to empty the queue
-   * @throws MalformedURLException
    */
   public ConcurrentUpdateSolrServer(String solrServerUrl, int queueSize,
-      int threadCount) throws MalformedURLException {
+      int threadCount) {
     this(solrServerUrl, null, queueSize, threadCount);
   }
 
@@ -99,8 +98,7 @@
    * ThreadSafeClientConnManager.
    */
   public ConcurrentUpdateSolrServer(String solrServerUrl,
-      HttpClient client, int queueSize, int threadCount)
-      throws MalformedURLException {
+      HttpClient client, int queueSize, int threadCount) {
     this.server = new HttpSolrServer(solrServerUrl, client);
     this.server.setFollowRedirects(false);
     queue = new LinkedBlockingQueue<UpdateRequest>(queueSize);
Index: solr/solrj/src/java/org/apache/solr/common/util/ContentStreamBase.java
===================================================================
--- solr/solrj/src/java/org/apache/solr/common/util/ContentStreamBase.java	(revision 1354855)
+++ solr/solrj/src/java/org/apache/solr/common/util/ContentStreamBase.java	(working copy)
@@ -73,7 +73,7 @@
   {
     private final URL url;
     
-    public URLStream( URL url ) throws IOException {
+    public URLStream( URL url ) {
       this.url = url; 
       sourceInfo = "url";
     }
@@ -95,7 +95,7 @@
   {
     private final File file;
     
-    public FileStream( File f ) throws IOException {
+    public FileStream( File f ) {
       file = f; 
       
       contentType = null; // ??
Index: solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java
===================================================================
--- solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java	(revision 1354855)
+++ solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java	(working copy)
@@ -83,7 +83,7 @@
             new ZkClientConnectionStrategy.ZkUpdate() {
               @Override
               public void update(SolrZooKeeper keeper)
-                  throws InterruptedException, TimeoutException, IOException {
+                  throws InterruptedException, TimeoutException {
                 synchronized (connectionStrategy) {
                   waitForConnected(SolrZkClient.DEFAULT_CLIENT_CONNECT_TIMEOUT);
                   client.updateKeeper(keeper);
@@ -118,7 +118,7 @@
   }
 
   public synchronized void waitForConnected(long waitForConnection)
-      throws InterruptedException, TimeoutException, IOException {
+      throws InterruptedException, TimeoutException {
     long expire = System.currentTimeMillis() + waitForConnection;
     long left = waitForConnection;
     while (!connected && left > 0) {
Index: solr/solrj/src/java/org/apache/solr/common/cloud/CloudState.java
===================================================================
--- solr/solrj/src/java/org/apache/solr/common/cloud/CloudState.java	(revision 1354855)
+++ solr/solrj/src/java/org/apache/solr/common/cloud/CloudState.java	(working copy)
@@ -240,7 +240,7 @@
 	/**
 	 * Create CloudState from json string that is typically stored in zookeeper.
 	 */
-	public static CloudState load(byte[] bytes, Set<String> liveNodes) throws KeeperException, InterruptedException {
+	public static CloudState load(byte[] bytes, Set<String> liveNodes) {
     if (bytes == null || bytes.length == 0) {
       return new CloudState(liveNodes, Collections.<String, Map<String,Slice>>emptyMap());
     }
Index: solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/carrot2/DuplicatingTokenizerFactory.java
===================================================================
--- solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/carrot2/DuplicatingTokenizerFactory.java	(revision 1354855)
+++ solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/carrot2/DuplicatingTokenizerFactory.java	(working copy)
@@ -39,7 +39,7 @@
       }
       
       @Override
-      public void reset(Reader input) throws IOException {
+      public void reset(Reader input) {
         delegate.reset(input);
       }
       
Index: solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngine.java
===================================================================
--- solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngine.java	(revision 1354855)
+++ solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngine.java	(working copy)
@@ -147,7 +147,7 @@
 
       final IResource foundResource = new IResource() {
         @Override
-        public InputStream open() throws IOException {
+        public InputStream open() {
           return new ByteArrayInputStream(asBytes);
         }
 
Index: solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/LuceneCarrot2TokenizerFactory.java
===================================================================
--- solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/LuceneCarrot2TokenizerFactory.java	(revision 1354855)
+++ solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/LuceneCarrot2TokenizerFactory.java	(working copy)
@@ -141,7 +141,7 @@
         array.reset(term.buffer(), 0, term.length());
       }
 
-      public void reset(Reader input) throws IOException {
+      public void reset(Reader input) {
         try {
           sentenceTokenizer.reset(input);
           wordTokenFilter = (TokenStream) tokenFilterClass.getConstructor(
Index: solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/LuceneCarrot2StemmerFactory.java
===================================================================
--- solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/LuceneCarrot2StemmerFactory.java	(revision 1354855)
+++ solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/LuceneCarrot2StemmerFactory.java	(working copy)
@@ -180,7 +180,7 @@
 
       private char[] buffer = new char[0];
 
-      private LuceneStemmerAdapter() throws Exception {
+      private LuceneStemmerAdapter() {
         delegate = new org.apache.lucene.analysis.ar.ArabicStemmer();
         normalizer = new org.apache.lucene.analysis.ar.ArabicNormalizer();
       }
Index: solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
===================================================================
--- solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java	(revision 1354855)
+++ solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java	(working copy)
@@ -101,13 +101,13 @@
   //TODO: fix this test to close its directories
   static String savedFactory;
   @BeforeClass
-  public static void beforeClass() throws Exception {
+  public static void beforeClass() {
     savedFactory = System.getProperty("solr.DirectoryFactory");
     System.setProperty("solr.directoryFactory", "solr.StandardDirectoryFactory");
   }
   
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     if (savedFactory == null) {
       System.clearProperty("solr.directoryFactory");
     } else {
Index: solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestErrorHandling.java
===================================================================
--- solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestErrorHandling.java	(revision 1354855)
+++ solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestErrorHandling.java	(working copy)
@@ -46,7 +46,7 @@
   }
   
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     if (savedFactory == null) {
       System.clearProperty("solr.directoryFactory");
     } else {
Index: solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java
===================================================================
--- solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java	(revision 1354855)
+++ solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java	(working copy)
@@ -70,7 +70,7 @@
   }
   
   @AfterClass
-  public static void afterClass() throws Exception {
+  public static void afterClass() {
     if (savedFactory == null) {
       System.clearProperty("solr.directoryFactory");
     } else {
