Go:
การเขียนไปยังข้อผิดพลาดมาตรฐาน
วิธีการ:
ในภาษา Go, แพ็คเกจ os
มีค่า Stderr
ที่แทนไฟล์สำหรับข้อความผิดพลาด คุณสามารถใช้มันกับฟังก์ชัน fmt.Fprint
, fmt.Fprintf
, หรือ fmt.Fprintln
เพื่อเขียนไปยัง stderr นี่คือตัวอย่างที่เรียบง่าย:
package main
import (
"fmt"
"os"
)
func main() {
// เขียนข้อความแบบง่ายๆไปที่ stderr
_, err := fmt.Fprintln(os.Stderr, "This is an error message!")
if err != nil {
panic(err)
}
// ข้อความผิดพลาดรูปแบบพร้อม Fprintf
errCount := 4
_, err = fmt.Fprintf(os.Stderr, "Process completed with %d errors.\n", errCount)
if err != nil {
panic(err)
}
}
ตัวอย่างผลลัพธ์ (ไปยัง stderr):
This is an error message!
Process completed with 4 errors.
จำไว้ว่าข้อความเหล่านี้จะไม่ปรากฏในผลลัพธ์ปกติ (stdout) แต่อยู่ในกระแสข้อผิดพลาดซึ่งสามารถเปลี่ยนทางได้แยกต่างหากในระบบปฏิบัติการส่วนใหญ่
ลงลึก
ความคิดเกี่ยวกับ standard error มีรากฐานมาจากปรัชญาของ Unix ซึ่งชัดเจนในการแยกแยะระหว่างผลลัพธ์ปกติและข้อความผิดพลาดเพื่อการจัดการและการประมวลผลข้อมูลที่มีประสิทธิภาพมากขึ้น ในภาษา Go ปรัชญานี้ได้รับการอ้าแขนรับผ่านแพ็คเกจ os
ซึ่งให้การเข้าถึงตรงไปยังตัวกำหนดที่ stdin, stdout และ stderr file descriptors
ในขณะที่การเขียนตรงไปยัง os.Stderr
เหมาะสมสำหรับโปรแกรมหลายๆ ประเภท ภาษา Go ยังมีแพ็คเกจ log ที่พัฒนาขึ้นมาอย่างซับซ้อน เช่น log
ซึ่งให้คุณลักษณะเพิ่มเติมเช่นการประทับเวลาและการปรับแต่งรูปแบบผลลัพธ์ที่ยืดหยุ่นมากขึ้น (เช่น การเขียนไปยังไฟล์) การใช้แพ็คเกจ log
โดยเฉพาะสำหรับแอพลิเคชั่นขนาดใหญ่หรือที่ต้องการคุณลักษณะการบันทึกข้อมูลที่ครอบคลุมมากขึ้นอาจเป็นทางเลือกที่ดีกว่า นอกจากนี้ยังควรทราบว่าวิธีการจัดการข้อผิดพลาดของ Go ซึ่งสนับสนุนการคืนข้อผิดพลาดจากฟังก์ชันเสริมวิธีการของการเขียนข้อความผิดพลาดไปยัง stderr ช่วยให้สามารถควบคุมการจัดการและการรายงานข้อผิดพลาดได้อย่างละเอียดยิ่งขึ้น
โดยทั่วไป ในขณะที่การเขียนไปยัง stderr ถือว่าเป็นงานพื้นฐานในภาษาโปรแกรมมิ่งหลายตัว Go ก็มีห้องสมุดมาตรฐานและหลักการออกแบบที่นำเสนอทางเลือกทั้งแบบพื้นฐานและขั้นสูงในการจัดการผลลัพธ์ข้อผิดพลาด โดยสอดคล้องกับปฏิบัติการทั่วไปในอุตสาหกรรมพร้อมกับตอบสนองต่อจรรยาบรรณการออกแบบของ Go เอง