Собственно суть. Вроде как все вызывает.
Пробовал без перехвата исключений вообще, просто пробросить вверх - тот же пункт не проходит.
if (!fileName.matches("^.*\\.txt$")) {
closeQuietly();
throw new UnsupportedFileNameException();
}
Решил что нужно вызвать close именно перехватив исключение, но.
Если словить UnsupportedFileNameException - ругается еще и на предпоследний пункт.
try {
if (!fileName.matches("^.*\\.txt$")) {
throw new UnsupportedFileNameException();
}
}catch (UnsupportedFileNameException ex){
closeQuietly();
}
Попробовал словить - закрыть поток, потом кинуть новый ексепшн, тоже нет.
Ему нужен явный вызов close именно в конструкторе или как?package com.javarush.task.task18.task1814;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/*
UnsupportedFileName
*/
public class TxtInputStream extends FileInputStream {
public TxtInputStream(String fileName) throws FileNotFoundException,UnsupportedFileNameException{
super(fileName);
try {
if (!fileName.matches("^.*\\.txt$")) {
throw new UnsupportedFileNameException();
}
}catch (UnsupportedFileNameException ex){
closeQuietly();
throw new UnsupportedFileNameException();
}
}
private void closeQuietly(){
try {
super.close();
}catch (IOException e){
/*Ignore, nothing can be done here*/
}
}
public static void main(String[] args) {
}
}