Как правильно делать обработку исключений PrintStream, чтобы созданным объектом можно было пользоваться за пределами try

Я пытался добиться истины методом тыка, но не получилось, поэтому обращаюсь к вам. Как обработать исключение FileNotFoundException (да и в целом любое исключение), чтобы try распространялся только на создание объектов и при этом я мог пользоваться созданными объектами за пределами try. Один из вариантов, который я придумал представлен ниже, но в параметрах методов createOutDataForAdmin и createOutDataForAdmin объекты outAdmin и outComputer класса PrintStream якобы не инициализированы.

public class main {
    public static void main(String args[]){
        Scanner keyboard=new Scanner(System.in);
        PrintStream outAdmin,outComputer;
        Scanner scan;
        try {
            outAdmin = new PrintStream("Out data for admin.txt");
            outComputer = new PrintStream("Out data for compute.txt");
            scan = new Scanner(new File("Out data for admin.txt"));
        }catch (FileNotFoundException exception){
            System.out.println("File not found");
        }

        User arrayUsers[]=new User[1];

        createOutDataForAdmin(arrayUsers,outAdmin);
        createOutDataForComputer(arrayUsers,outComputer);

    }

Был еще такой вариант. Код все тот же только изменен блок try catch. Все та же проблема за пределами try не могу пользоваться созданными объектами.

try {
            PrintStream outAdmin = new PrintStream("Out data for admin.txt");
            PrintStream outComputer = new PrintStream("Out data for compute.txt");
            Scanner scan = new Scanner(new File("Out data for admin.txt"));
        }catch (FileNotFoundException exception){
            System.out.println("File not found");
        }

И третий вариант, я весь код запихнул в try. Его я не вижу смысла иллюстрировать. Мне кажется, это так не должно выглядеть, хотя в этом случае все работало как надо. Если что-то напутал в терминах, прощу критиковать)


Ответы (1 шт):

Автор решения: had0uken

Попробуй в таком виде:

 public class main {
        public static void main(String args[]){
                Scanner keyboard=new Scanner(System.in);
                PrintStream outAdmin=null;
                PrintStream  outComputer=null;
                Scanner scan;
            try {
                outAdmin = new PrintStream("Out data for admin.txt");
                outComputer = new PrintStream("Out data for compute.txt");
                scan = new Scanner(new File("Out data for admin.txt"));
            }catch (FileNotFoundException exception){
                System.out.println("File not found");
            }
    
            User arrayUsers[]=new User[1];
    
            createOutDataForAdmin(arrayUsers,outAdmin);
            createOutDataForComputer(arrayUsers,outComputer);
    
        }
→ Ссылка