А вот мне непонятен простой момент, почему RunTimeException вообще должен перехватывать исключения , которые к нему никак не относятся? , эти исключения проверяемые и вроде как их должен перехватывать их родительский класс, т.е Exception, каким боком вообще RuntimeException, способен их перехватить?
package com.javarush.task.pro.task14.task1411;
import java.io.FileNotFoundException;
import java.nio.file.FileSystemException;
/*
Распаковка исключений
*/
public class Solution {
public static final String FAILED_TO_READ = "Не удалось прочесть файл.";
public static final String FAILED_TO_WRITE = "Не удалось записать в файл.";
public static FileManager fileManager = new FileManager();
public static void main(String[] args) {
try{
fileManager.copyFile("book.txt", "book_final_copy.txt");
fileManager.copyFile("book_final_copy.txt", "book_last_copy.txt");
//напишите тут ваш код
}
catch (RuntimeException e){
Throwable exp = e.getCause();
if(exp instanceof FileSystemException){
System.out.println(FAILED_TO_WRITE);
throw new RuntimeException();
}
else if(exp instanceof FileNotFoundException){
System.out.println(FAILED_TO_READ);
throw new RuntimeException();
}
}
}
}