Java поймать IOException - PullRequest
       8

Java поймать IOException

2 голосов
/ 02 апреля 2011

Я думаю, что это основные вещи, но я не уверен, что делать. Почему я получаю IOException never thrown in body of corresponding try statement

public static void main(String[] args)
    {
        File inputFile = null ;

        try
        {
            inputFile = new File("records.txt") ;   
        }
        catch (IOException e)
        {
            System.out.print("file not found!") ;
        }

Ответы [ 5 ]

5 голосов
/ 02 апреля 2011

Это никогда не вызывает IOException.Создание объекта File не связывает его ни с чем на диске.То есть нет IO.

Если вы попытаетесь прочитать или записать объект File, у которого нет соответствующего файла на диске, вы получите IOExceptions.Например, если вы пытаетесь получитьCanonicalPath из файла, которого на самом деле нет на диске.

5 голосов
/ 02 апреля 2011

Конструктор File сам по себе не очень эффективен.

Только когда вы действительно начнете выполнять реальные операции, исключения IOException могут быть выданы.

2 голосов
/ 02 апреля 2011

Потому что вы можете создать экземпляр File object с любой желаемой строкой.Вы получите исключение позже, когда попытаетесь прочитать / записать / открыть фактический файл.

1 голос
/ 02 апреля 2011

File(String) не выбрасывает IOException, поэтому вы не можете поймать его в это время.

0 голосов
/ 02 апреля 2011

Если вы хотите проверить, существует ли файл, сделайте это с помощью file.exists().Кроме того:

  • никогда не глотать исключения - всегда регистрируйте трассировку стека или перебрасывайте исключение (например, оборачивая его в исключение времени выполнения)

  • не полагайтесь на обработку исключений для потока программы - это должны быть исключительные случаи.

...