2016-03-23 3 views
1

Код в блоке catch не выполняется, когда генерируется исключение. Я не уверен, что исключение выбрасывается там, где я думаю. Есть предположения? Это выход:Catch IO Exception Не выполнено

Исключение в потоке "АВТ-EventQueue-0" java.lang.NullPointerException

receivedPicBase64 = pic1builder.toString(); 

try { 
    byte[] picbytearray = Base64.decode(receivedPicBase64); 
    BufferedImage imag = ImageIO.read(newByteArrayInputStream(picbytearray)); 
    ImageIO.write(imag, imgType, new File(dirName,fileName));  
    }  
catch (IOException ex) { 
    showError("Picture not fully received"); 
    System.out.println("Inside Catch Block"); 
    } 
finally{ 
    receivedPicBase64 = ""; 
    pic1builder.delete(0, pic1builder.length()); 
    System.out.println("End of Finally Block"); 

    } 
+0

Проверьте стека исключений трассировки. Это буквально говорит вам о линии, из которой она выбрана. – Radiodef

+0

Исключение составляется во второй последней строке инструкции try. Я знаю это, потому что я намеренно создаю ошибки. моя проблема в том, что catch не выполняется, когда возникают эти ошибки. – bfrancis

+0

Кроме того, всякий раз, когда вы ловите исключение, вы всегда хотите куда-то поместить трассировку стека. Прямо сейчас ваш блок блокировки просто ест его. Это не поможет вам вообще, потому что тогда вы ничего не знаете об ошибке. – Radiodef

ответ

2

обновить свой код также,

try { 
    ... 
    }  
catch (IOException ex) { 
    ... 
    } 
catch (NullPointerException ex) { 
    showError("NullPointerException catch"); 
    System.out.println("Inside NullPointerException-Catch Block"); 
    } 
finally{ 
    .... 
    } 
1

Ваш улов поймает только IOException. Если вы хотите, чтобы поймать все исключения, используйте

catch (Exception ex) { 
    showError("Picture not fully received"); 
    System.out.println("Inside Catch Block"); 
} 
+1

Почти наверняка не то, что хочет OP. – Radiodef