Dart:
Запись в стандартный вывод ошибок
Как это сделать:
В Dart запись в stderr выполнить довольно просто с помощью объекта stderr
, доступного в dart:io
. Вот простой пример:
import 'dart:io';
void main() {
stderr.writeln('Это сообщение об ошибке.');
}
Вывод при выполнении:
Это сообщение об ошибке.
Это сообщение отправляется в поток stderr, который обычно отображается в консоли или терминале.
Чтобы продемонстрировать более сложный пример, например, ведение журнала исключений, богатый набор возможностей Dart позволяет эффективно и лаконично обрабатывать ошибки:
import 'dart:io';
void riskyOperation() {
try {
// Имитация операции, которая может вызвать исключение
throw Exception('Что-то пошло не так!');
} catch (e) {
stderr.writeln('Ошибка: $e');
}
}
void main() {
riskyOperation();
}
Вывод при выполнении:
Ошибка: Exception: Что-то пошло не так!
Этот паттерн особенно полезен для приложений, которым необходимо разделить обычные журналы от журналов ошибок, что упрощает мониторинг и отладку приложений.
Хотя стандартная библиотека Dart довольно обширна, многие программы не требуют сторонних библиотек для записи в stderr. Однако, если вашему приложению нужны более сложные возможности логгирования (например, в файлы, через сеть, форматирование), пакет logging
является популярным выбором. Вот быстрый пример использования logging
для ошибок:
import 'dart:io';
import 'package:logging/logging.dart';
final logger = Logger('MyAppLogger');
void setupLogging() {
logger.onRecord.listen((record) {
if (record.level >= Level.SEVERE) {
stderr.writeln('${record.level.name}: ${record.time}: ${record.message}');
}
});
}
void main() {
setupLogging();
logger.severe('Серьезная ошибка: Случилось что-то очень плохое.');
}
Вывод при выполнении:
SEVERE: 2023-04-01 00:00:00.000: Серьезная ошибка: Случилось что-то очень плохое.
Этот метод предлагает более высокую степень кастомизации и контроля над тем, что записывается как ошибка и как это форматируется, что может быть очень полезно в больших и более сложных приложениях.