การเขียนไปยังข้อผิดพลาดมาตรฐาน

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 เอง