2012-02-04 3 views
2
public class Employee { 


public static void main(String[] args) { 
    int j=3; 
    staples[] stemp = new staples[j]; 
    String file_name = "d:/personal/11636470/NetBeansProjects/Employee/src/employee/Xanadu.txt"; 

    throws IOException 

    { 

    Scanner s = null; 
    try { 
     s = new Scanner(
        new BufferedReader(
        new FileReader("file_name"))); 

     while (s.hasNext()) 
     { 
      System.out.println(s.next()); 
     } 
     } finally 
     { 
     if (s != null) 
      { 
      s.close(); 
      } 
     } 



try 

{ 

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 

for (j=0;j<3;j++) 
     { 
      stemp[j] = new staples(); 

      System.out.print("Enter your name : "); 
      stemp[j].setName(reader.readLine()); 

      System.out.println("Enter your age : "); 
      stemp[j].setAge(Integer.parseInt(reader.readLine())); 


     } 


for (j=0;j<3;j++) 
     { 
      System.out.println("Employee number:" + j +" name:"+stemp[j].getName()+" Age:"+stemp[j].getAge()); 

     } 


reader.close(); // VERY IMPORTANT TO CLOSE 






System.out.println("Program ended"); 

} 

catch(java.io.IOException ex) 
{ 
    System.out.println("Error is " + ex.getMessage()); 
} 



} 

} }Java обработка исключений запрос

Проблема, кажется, просто, я получаю сообщение об ошибке в строке «бросает IOException», есть что-то не так с попытаться поймать метод, который я реализованного?

К данному коду относятся две части: одна состоит в том, чтобы читать файл xanadu.txt, а другой - копировать данные о сотруднике. Попробуйте и поймайте выполнение.

+2

Немного переформатирования может помочь, я смущаюсь по строке 10 – DaveRlz

+0

Да, этот отступ кода повсюду. –

+0

Позвольте мне переформатировать его –

ответ

1

Это часть, в которой вы полностью ошибаетесь.

try 
{ 
    s = new Scanner((Readable) new BufferedReader(new FileReader("file_name"))); 
    while (s.hasNext()) 
     System.out.println(s.next()); 
    } catch (IOException e) 
    { 
     // Do the error stuff. 
     e.printStackTrace(); 
    } finally 
    { 
     // Do it anyway. If error happens or not. 
     if (s != null) 
     s.close(); 
    } 
} 

и throws IOException находится в неправильном месте, он должен быть помещен здесь:

public static void main(String[] args) throws IOException {

В этом случае вам не нужно будет любой попробовать, поймать блоки - вы просто передать, что исключение (в вашем случае вам не нужно будет беспокоиться об этом), чтобы он обрабатывал исключение, но если вы хотите обрабатывать исключения с помощью try, catch block, вам это не понадобится.

1

предложение throws действует в декларации метода, а не внутри тела метода.

+0

, так что вы говорите, что броски IOException должны быть размещены в другом месте? –

+0

Да, это должно быть 'public static void main (String [] args) throws IOException {'. Основной метод можно объявить как исключение. –

+0

Или вы можете поймать это исключение в своей первой попытке, как описано Марсином. –