java关闭Scanner遇到的问题

在整理之前的代码时发现了一个问题,不知道哪种解决方案稳妥一点,把2种解决方案贴出来,问一下大兄弟们,哪个好一些

public static int showMenu(String title,String[] items){
    Scanner input=new Scanner(System.in);
    try {
        System.out.println(title);
        for (int i = 0; i < items.length; i++) {
            System.out.println((i+1)+"."+items[i]);
        }
        System.out.print("请选择:");
        return input.nextInt();
    } catch (Exception e) {
        return -1;
    } finally {
        input.close();
    }
}

public static int showMenu(String title,String[] items){
    Scanner input=new Scanner(System.in);
    System.out.println(title);
    for (int i = 0; i < items.length; i++) {
        System.out.println((i+1)+"."+items[i]);
    }
    System.out.print("请选择:");
    int temp = input.nextInt();
    input.close();  
    return temp;
}

return可以放到最后面

如果测试我会选第一个 如果是一个工程 我会选第一个

一般我是选第一个,而且return方法不一定非要放最后执行,finally是一定会执行的也就是说finally里的资源释放与清空是必然执行的<只要不直接停虚拟机即可>