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: Серйозна помилка: Сталася дуже погана подія.
Цей метод пропонує вищий ступінь налаштування та контролю над тим, що журналюється як помилка і як це форматується, що може бути дуже корисним у більших, складніших додатках.