ПотокиConsole . OutиConsole .Errorявляются объектами типаTextWriter.Вывод на консоль проще всего осуществить с помощью методовWrite() иWriteLine (), с которыми вы уже знакомы. Существуют варианты этих методов для вывода данных каждого из встроенных типов. В классеConsoleопределяются его собственные варианты методаWrite() nWriteLine(),nпоэтому они могут вызываться непосредственно для классаConsole,как это было уже не раз показано на страницах данной книги. Но при желании эти и другие методы могут быть вызваны и для классаTextWriter,который является базовым для потоковConsole . OutиConsole . Error.

Ниже приведен пример программы, в котором демонстрируется вывод в потокиConsole . OutиConsole . Error.По умолчанию данные в обоих случаях выводятся на консоль.

// Организовать вывод в потоки Console.Out и Console.Error.

using System;

class ErrOut {

static void Main() { int a=10, b=0; int result;

Console.Out.WriteLine("Деление на нуль приведет " +

"к исключительной ситуации.");

try {

result = а / b; // сгенерировать исключение при попытке деления на нуль } catch(DivideByZeroException exc) {

Console.Error.WriteLine(exc.Message);

}

}

}

При выполнении этой программы получается следующий результат.

Деление на нуль приведет к исключительной ситуации.

Попытка деления на нуль.

Начинающие программисты порой испытывают затруднения при использовании потокаConsole.Error.Перед ними невольно встает вопрос: если оба потока,Console . OutиConsole .Error,по умолчанию выводят результат на консоль, то зачем нужны два разных потока вывода? Ответ на этот вопрос заключается в том, что стандартные потоки могут быть переадресованы на другие устройства. Так, потокConsole .Errorможно переадресовать в выходной файл на диске, а не на экран. Это, например, означает, что сорбщения об ошибках могут быть направлены в файл журнала регистрации, не мешая выводу на консоль. И наоборот, если вывод на консоль пере-адресуется, а вывод сообщений об ошибках остается прежним, то на консоли появятся сообщения об ошибках, а не выводимые на нее данные. Мы еще вернемся к вопросу переадресации после рассмотрения файлового ввода-вывода.

Класс FileStream и байтовый ввод-вывод в файл

Перейти на страницу:

Похожие книги