added a wrapper exception for anything that goes wrong in VCF parsing; this way the problematic file line is emitted, no matter what happens. Makes debugging a lot easier, especially in large files.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2739 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
aaron 2010-01-29 19:58:51 +00:00
parent e7f5c93fe5
commit ac2a207b0b
2 changed files with 45 additions and 28 deletions

View File

@ -0,0 +1,14 @@
package org.broadinstitute.sting.utils.genotype.vcf;
/**
* an exception to funnel all parsing exceptions into; this way we can emit the line we choked on as well
*/
public class VCFParseException extends RuntimeException {
public VCFParseException(String message) {
super(message);
}
public VCFParseException(String message, Throwable cause) {
super(message, cause);
}
}

View File

@ -191,10 +191,10 @@ public class VCFReader implements Iterator<VCFRecord>, Iterable<VCFRecord> {
* *
* @param line the line from the file * @param line the line from the file
* @param mHeader the VCF header * @param mHeader the VCF header
*
* @return the VCFRecord * @return the VCFRecord
*/ */
public static VCFRecord createRecord(String line, VCFHeader mHeader) { public static VCFRecord createRecord(String line, VCFHeader mHeader) {
try {
// things we need to make a VCF record // things we need to make a VCF record
Map<VCFHeader.HEADER_FIELDS, String> values = new HashMap<VCFHeader.HEADER_FIELDS, String>(); Map<VCFHeader.HEADER_FIELDS, String> values = new HashMap<VCFHeader.HEADER_FIELDS, String>();
String tokens[] = line.split("\\s+"); String tokens[] = line.split("\\s+");
@ -226,6 +226,9 @@ public class VCFReader implements Iterator<VCFRecord>, Iterable<VCFRecord> {
} }
return new VCFRecord(values); return new VCFRecord(values);
} catch (Exception e) {
throw new VCFParseException("VCF Reader failed to parsing, on line = " + line, e);
}
} }
/** /**