Курс по java. Часть 3 (Рейтинг: -1)

Печать / RSS
Опять всем привет.
Как я и обещал начнем с исключений (try catch).
Это очень полезная фишка (такое есть в C++ и, если не ошибаюсь, в PHP).
Исключения очень полезны, когда какой либо объект не инициализировался или не может быть инициализирован. Как пример могу привести код:

            BufferedReader br=new BufferedReader(new FileReader(new File("D://test.txt"))); 
            newString=br.readLine(); 
            br.close(); 

Что бы произошло, если бы файла test.txt небыло в этом месте, а исключение не стояло бы (при условии что пишем в IDE, которая не следит за исключениями (NetBeans и Eclipse следят за этим))?
Произошла бы ошибка, из-за которой приложение не отработало бы до конца.
В случае с try-catch при возникновении ошибки можно увидеть где произошла ошибка, причину.
Если после объявления функции написать «throw класс_исключения», то если будет ошибка функция не обратит на нее внимания, но если функция с throw вызвана в try-catch, то произойдет обработка исключения.
Думаю с этим более или менее разобрались. В примере будут и примеры исключений.
Перейдем к Thread. Это класс потоков (нитей). Многопоточность мы будем использовать в графическом интерфейсе, так что запоминаем.
Самые важные методы класса Thread — start (запускает новый поток параллельно выполнению программы), run (запускает новый поток, при этом программа ждет его завершения), stop (останавливает поток) и sleep(замораживает поток на указанное время (в миллисекундах))
Начиная с этой части вся информация по коду будет находиться внутри.

package hello;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Hello {
private static Scanner scan;// эта переменная перенесена сюда, чтоб она была доступна из потока
public static void main(String[] args){
scan=new Scanner(System.in);
Thread t=new Thread(new Runnable() {

@Override
public void run() {
try {
Thread.sleep(1000);// делаем задержку выполнения потока на 1 секунду
} catch (InterruptedException ex) {
Logger.getLogger(Hello.class.getName()).log(Level.SEVERE, null, ex);
}
String File=scan.nextLine();
String Text=scan.nextLine();
try {
saveToFile(File, Text);// Функция с прописанным throw
} catch (IOException ex) {
System.out.println("Ошибка");// вывод сообщения об ошибке
Logger.getLogger(Hello.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Поток закончился");
}
});
t.start();
System.out.println("Начало");// это сообщение будет первым, т.к. в потоке задержка
}

private static void saveToFile(String File, String Text) throws IOException{
BufferedWriter bw=new BufferedWriter(new FileWriter(new File(File)));
bw.write(Text);
bw.close();
}
}

Автор: Димон (04.11.11 / 15:59)
Java
Рейтинг: -1
Просмотры: 835
Комментарии (0) »