2013-09-11 2 views
0
DataInput in = new DataInputStream(System.in); 
System.out.println("What is your name"); 
String name = in.readLine(); 

Ошибка говорит об ошибке «Необработанное исключение IO». Что случилось с этим кодом?получение ввода в исключение java throws

+4

'readLine' бросает проверяемое исключение – Reimeus

+0

проверяемое исключение? –

+0

@WinCoder Я дал краткое объяснение проверенного и непроверенного исключения [здесь] (http://stackoverflow.com/questions/8423700/how-to-create-a-custom-exception-type-in-java/8423743#8423743). – Laf

ответ

4

Unhandled IO Исключение

либо поймать IOException или объявить его бросить, readLine() заявляет, что он может бросить это исключение, так что ваш код должен обрабатывать/выбросить это

1

Этот метод readLine() бросает IOException это проверенное исключение. Так у вас есть два варианта поймать его и обработать его и/или в объявлении метода добавить throws ключевое слово

Пример:

public void throwsMethod() throws IOException{ 
    DataInput in = new DataInputStream(System.in); 
    System.out.println("What is your name"); 
    String name = in.readLine(); 
    . 
    . 
} 

public void handleMethod(){ 
    DataInput in = new DataInputStream(System.in); 
    System.out.println("What is your name"); 
    String name=null; 
    try{ 
    name = in.readLine(); 
    }catch(IOException){ 
    //do something here 
    } 
    . 
    . 
} 

Для получения более подробной информации читайте эту оракула статью Exceptions

2

Вы должны окружать вызов in.readLine() с try/catch.

DataInput in = new DataInputStream(System.in); 
System.out.println("What is your name"); 

try { 
    String name = in.readLine(); 
} catch (IOException ioex) { 
    // Handle exception accordingly 
} 

Или вы могли бы добавить пункт trows IOException к вашей подписи методы, что означает, что вызывающий метод будет обрабатывать исключение (с try/catch блоком).

В соответствии с Javadoc entry метод readLine() устарел, и вместо этого вы должны использовать BufferedReader.

+0

Почему метод взаимодействия с консолью выдает исключение? –

+0

@WinCoder, если при чтении потока возникает ошибка ввода-вывода, будет выдано 'IOException', с доступными деталями в объекте исключения. – Laf

+1

Может быть любое количество причин. В конечном счете, это не имеет значения, поскольку, поскольку метод объявлен как «throws IOException», вам необходимо, так или иначе, обработать исключение, будь то его ловить или объявить ваш метод «throws IOException» (или некоторые суперкласс «IOException») – StormeHawke

1

ReadLine() броски IOException, которое проверяется исключение должно быть либо выброшен или обрабатываются во время компиляции см Oracle documentation

Смежные вопросы