Apakah ada pedoman kapan harus menggunakan kesalahan saat menulis aplikasi baris perintah? Yang mengejutkan saya, saya tidak menemukan apa pun ketika mencari di Google.
Secara khusus, pertanyaan yang saya khawatirkan saat ini adalah apakah akan menggunakan stdout
atau stderr
ketika pengguna memanggil program dengan argumen ilegal. Namun, jawaban yang lebih komprehensif sangat dihargai karena ini pasti bukan satu-satunya kasus di mana aturan yang jelas diperlukan untuk menulis sebuah program yang berperilaku seperti yang diharapkan oleh pengguna.
Jawaban:
Ya, tampilkan pesan pada
stderr
saat argumen yang salah digunakan. Dan jika itu juga menyebabkan aplikasi keluar, keluar dengan status keluar yang tidak nol.Anda harus menggunakan aliran kesalahan standar untuk pesan diagnostik atau untuk interaksi pengguna. Pesan diagnostik termasuk pesan kesalahan, peringatan, dan pesan lain yang bukan bagian dari keluaran utilitas ketika beroperasi dengan benar ("benar" artinya tidak ada kejadian luar biasa, seperti file yang tidak ditemukan, atau apa pun itu).
Banyak tampilan kerang (semua?) Meminta, apa yang diketik pengguna, dan menu dll.
stderr
Sehingga pengarahan ulangstdout
tidak akan menghentikan Anda berinteraksi dengan shell dengan cara yang berarti.Berikut ini adalah dari posting blog tentang topik ini:
Untuk "mengidentifikasi diri sendiri" berarti hanya mengatakan "Hei! Ini aku yang berbicara! Ini salah: [...]":
Melakukan hal ini pada
stderr
lebih disukai, karena bisa dinyatakan dibaca oleh apa pun yang membaca distdout
(tapi kami tidak melakukannya denganls
tetap , kita?).sumber
Dari spesifikasi POSIX untuk stream standar:
Dengan kata lain, kesalahan, info debug, dan apa pun yang masuk dalam kategori diagnostik masuk ke dalam
stderr
.Lihat pertanyaan terkait untuk info lebih lanjut: Apakah laporan kemajuan / informasi logging milik stderr atau stdout?
sumber