Jika saya menulis skrip atau program, haruskah saya menampilkan stderr namanya bersama dengan peringatan atau pesan kesalahan? Sebagai contoh:
./script.sh: Warning! Variable "var" lowered down to 10.
atau:
./prog.py: Error! No such file: "file.cfg".
Saya mengerti bahwa secara umum itu hanya masalah selera (terutama jika Anda menulis sendiri barang-barang Anda), tetapi saya bertanya-tanya apakah ada yang konvensional dengan itu? Saya percaya sebagian besar utilitas UNIX / Linux menulis nama mereka ketika sesuatu terjadi, jadi sepertinya hal yang baik, tetapi apakah ada pedoman atau aturan yang tidak diucapkan bagaimana melakukan itu dan bagaimana tidak?
Misalnya, tidak disarankan memasang binari di bawah /usr/bin/
, melainkan di bawah /usr/local/bin/
atau yang lainnya. Apakah ada aturan yang sama tentang output ke stderr? Haruskah saya menulis nama yang diikuti dengan tanda titik dua? Atau hanya "Peringatan!" dan "Kesalahan!" kata-kata? Saya tidak dapat menemukan apa pun, tetapi mungkin seseorang dapat mengarahkan saya ke tempat untuk membacanya.
Pertanyaan ini sedikit tentang praktik pemrograman, tapi saya pikir lebih tepat di sini daripada di stackoverflow , karena ini tentang tradisi UNIX / Linux dan bukan pemrograman pada umumnya.
sumber
no such file
dari siapa yang tahu program apa yang ada dalamfoo | bar | baz
pipa.Jawaban:
Merupakan praktik umum untuk menyimpan argumen 0 yang diteruskan ke program C
main
dan menggunakannya sebagai parameter untukperror
- untuk program sederhana:sebut program itu "foo", dan menjalankannya mengilustrasikan intinya:
Program yang rumit dapat ditambahkan ke teks (atau hanya menggunakan nama file tanpa path), tetapi menjaga nama program memungkinkan Anda menemukan dari mana program perilaku buruk berasal.
Tidak ada skema yang diterima secara universal untuk pesan kesalahan, tetapi beberapa program yang banyak digunakan (seperti gcc) menambahkan kategori pesan seperti "Kesalahan" atau "Peringatan". Berikut ini contoh dari salah satu build-log saya:
Dalam contoh ini, gcc memisahkan bidang dengan titik dua dan menambahkan kategori "peringatan" setelah nama file, nomor baris, nomor kolom - dan sebelum pesan aktual. Tetapi ada beberapa variasi, menjadikannya rumit untuk program (seperti vi-like-emacs ) untuk mengurai informasi.
Untuk kompiler, menggunakan kategori dalam pesan membuatnya mudah untuk mendeteksi kesalahan fatal (yang mungkin tidak langsung berakibat fatal ) dan peringatan. Jika program Anda keluar karena kesalahan itu tidak menambah banyak untuk mengatakan bahwa ada yang benar-benar peringatan dan ada yang kesalahan. Tetapi ketika itu berperilaku berbeda (atau terus bekerja lebih atau kurang) kategori membantu untuk mendiagnosis masalah yang dihadapi.
sumber
Jika suatu program dipanggil sebagai bagian dari skrip di mana banyak program lain dipanggil, dan jika tidak mencetak namanya, maka pengguna akan kesulitan untuk mencari tahu dari mana kesalahan itu berasal.
(Jika kesalahannya adalah beberapa kondisi internal tak terduga yang mungkin memerlukan debugging, Anda menginginkan lebih banyak info: bukan hanya nama program, tetapi file sumber dan nomor baris dan mungkin juga backtrace.)
sumber