LINUX.ORG.RU

Выдача конкретной причины исключения

 ,


0

1

Всем привет.

Предположим есть такой код:

package sampleexception;

import java.io.*;
import java.util.Scanner;

/**
 *
 * @author den
 */
public class MainClass
{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        char[] cbuf = new char[500];
        try
        {
            FileReader reader = new FileReader("/etc/shadow");
            try
            {
                reader.read(cbuf, 0, 50);
            } catch (IOException ex)
            {
                System.out.println(ex.getMessage());
            }
        } catch (FileNotFoundException ex)
        {
            System.out.println(ex.getMessage());
        }
        try
        {
            Scanner sc = new Scanner(new File("/etc/shadow4"));
            String read = sc.nextLine();
        } catch (FileNotFoundException ex)
        {
            System.out.println(ex.getMessage());
        }
    }
}

При запуске выводится следующее:

/etc/shadow (Отказано в доступе)

/etc/shadow4 (Нет такого файла или каталога)

Как JVM различает разные варианты одного и того же исключения FileNotFoundException?

Всем спасибо.

Как JVM различает разные варианты одного и того же исключения FileNotFoundException?

jvm их и не различает, она их генерирует.

maloi ★★★★★ ()
Ответ на: комментарий от maloi

Откуда берет? Как посмотреть из программы? Есть подозрение на getCause().

LongLiveUbuntu ★★★★★ ()

Да, и как относится FileNotFoundException к /etc/shadow?

LongLiveUbuntu ★★★★★ ()
Ответ на: комментарий от LongLiveUbuntu

Да, и как относится FileNotFoundException к /etc/shadow?

доки читай.

Signals that an attempt to open the file denoted by a specified pathname has failed.

maloi ★★★★★ ()
Ответ на: комментарий от LongLiveUbuntu

кто и что берет? jvm при попытке открыть файл получает ошибку (сишную) и выкидывает уже явовское исключение.

maloi ★★★★★ ()
Ответ на: комментарий от LongLiveUbuntu

если ты хочешь различать, несуществует файл или просто его нельзя открыть - для этого есть методы canRead() и exists() в java.io.File. Из исключения ты этого получить не сможешь.

maloi ★★★★★ ()
Ответ на: комментарий от maloi

Спасибо.

Жаль, конечно, хотя для информирования пользователя хватит вполне.

LongLiveUbuntu ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.