Thep Excel

Error.Record – สร้างระเบียนข้อผิดพลาด

Error.Record สร้างระเบียนข้อผิดพลาดที่มีข้อมูลโครงสร้าง ด้วย reason, message, detail และ errorCode เพื่อให้การจัดการข้อผิดพลาดละเอียดขึ้น

= Error.Record(reason as text, optional message as nullable text, optional detail as any, optional parameters as nullable list, optional errorCode as nullable text) as record

By ThepExcel AI Agent
12 December 2025

Function Metrics


Popularity
5/10

Difficulty
4/10

Usefulness
6/10

Syntax & Arguments

= Error.Record(reason as text, optional message as nullable text, optional detail as any, optional parameters as nullable list, optional errorCode as nullable text) as record

Argument Type Required Default Description
reason text Yes ข้อความที่อธิบายเหตุผลหลักของข้อผิดพลาด (เช่น ‘DivideByZero’, ‘ValidationFailed’, ‘CustomerNotFound’)
message nullable text Optional null ข้อความรายละเอียดเพิ่มเติมที่อธิบายข้อผิดพลาด ช่วยให้ผู้ใช้เข้าใจสาเหตุ
detail any Optional null ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด สามารถเป็นข้อความ ตัวเลข หรือโครงสร้างอื่น
parameters nullable list Optional null รายการค่าที่ให้บริบทเพิ่มเติมสำหรับการวินิจฉัยหรือการจัดการแบบโปรแกรมเชิง
errorCode nullable text Optional null รหัสข้อผิดพลาดที่ระบุตัวตนสำหรับการอ้างอิง (เช่น ‘ERR404’, ‘ERR500’)

Examples

สร้างข้อผิดพลาดการหารด้วยศูนย์
let Input = 100, Divisor = 0, Result = try if Divisor = 0 then error Error.Record( "DivideByZero", "ไม่สามารถหารด้วยศูนย์ได้" ) else Input / Divisor catch (e) =…
สร้างข้อผิดพลาดเมื่อพยายามหารด้วยศูนย์ โดยใช้ Error.Record ร่วมกับ try-catch เพื่อจัดการข้อผิดพลาดแบบมีเงื่อนไข reason คือ 'DivideByZero' ส่วน message คือข้อความที่อธิบายปัญหา
Power Query Formula:

let
    Input = 100,
    Divisor = 0,
    Result = try
        if Divisor = 0 then
            error Error.Record(
                "DivideByZero",
                "ไม่สามารถหารด้วยศูนย์ได้"
            )
        else
            Input / Divisor
    catch (e) => e
in
    Result

Result:

[HasError = true, Error = [Reason = "DivideByZero", Message = "ไม่สามารถหารด้วยศูนย์ได้"]]

ข้อผิดพลาดการตรวจสอบข้อมูลพร้อมรหัสข้อผิดพลาด
let CustomerId = 12345, Result = try if CustomerId > 9999 then error Error.Record( "CustomerNotFound", Text.Format("รหัสลูกค้า #{0} ไม่พบในระบบ", {CustomerId}),…
สร้างข้อผิดพลาดที่มีรายละเอียดครบครัน พร้อมทั้ง reason, message ที่มีข้อมูลลูกค้า, detail, parameters, และ errorCode ทำให้สามารถติดตามและจัดหมวดหมู่ข้อผิดพลาดได้ง่าย
Power Query Formula:

let
    CustomerId = 12345,
    Result = try
        if CustomerId > 9999 then
            error Error.Record(
                "CustomerNotFound",
                Text.Format("รหัสลูกค้า #{0} ไม่พบในระบบ", {CustomerId}),
                "ลูกค้าไม่มีอยู่ในฐานข้อมูล",
                {Text.Format("Invalid ID = #{0}", {CustomerId})},
                "ERR404"
            )
        else
            CustomerId
    catch (e) => e
in
    Result

Result:

[HasError = true, Error = [Reason = "CustomerNotFound", Message = "รหัสลูกค้า #12345 ไม่พบในระบบ", Detail = "ลูกค้าไม่มีอยู่ในฐานข้อมูล", ErrorCode = "ERR404"]]

จัดการข้อผิดพลาดของการแปลงประเภทข้อมูล
let Value = "ABC", Result = try if Value is text and not Number.FromText(Value) then error Error.Record( "InvalidType", "ค่า '" & Value & "' ไม่สามารถแปลงเป็นตั…
ใช้ Error.Record ร่วมกับ try-catch เพื่อสร้างข้อผิดพลาดที่กำหนดเองเมื่อการแปลงประเภทข้อมูลล้มเหลว ช่วยให้ผู้ใช้เข้าใจสาเหตุของปัญหาและวิธีแก้ไข
Power Query Formula:

let
    Value = "ABC",
    Result = try
        if Value is text and not Number.FromText(Value) then
            error Error.Record(
                "InvalidType",
                "ค่า '" & Value & "' ไม่สามารถแปลงเป็นตัวเลขได้",
                "โปรดตรวจสอบรูปแบบของข้อมูล",
                {Value, "Number"},
                "ERR_INVALID_TYPE"
            )
        else
            Number.FromText(Value)
    catch (e) => e
in
    Result

Result:

[HasError = true, Error = [Reason = "InvalidType", Message = "ค่า 'ABC' ไม่สามารถแปลงเป็นตัวเลขได้", Detail = "โปรดตรวจสอบรูปแบบของข้อมูล", ErrorCode = "ERR_INVALID_TYPE"]]

ข้อผิดพลาดการตรวจสอบความถูกต้องในตารางข้อมูล
let Source = Table.FromRows({{1, "John", 25}, {2, "Jane", -5}, {3, "Bob", 35}}, {"ID", "Name", "Age"}), ValidateAge = Table.AddColumn( Source, "AgeValidation",…
สร้างการตรวจสอบข้อมูลในตารางโดยใช้ Table.AddColumn และ Error.Record เพื่อเก็บข้อผิดพลาดของแต่ละแถว แต่ละข้อมูลที่ไม่ตรงตามเงื่อนไข (อายุไม่อยู่ในช่วง 0-120) จะสร้าง error record ที่มีบริบทเฉพาะ ช่วยให้ค้นหาข้อมูลที่มีปัญหาได้ง่าย
Power Query Formula:

let
    Source = Table.FromRows({{1, "John", 25}, {2, "Jane", -5}, {3, "Bob", 35}}, {"ID", "Name", "Age"}),
    ValidateAge = Table.AddColumn(
        Source,
        "AgeValidation",
        each
            try
                if [Age] < 0 or [Age] > 120 then
                    error Error.Record(
                        "AgeOutOfRange",
                        Text.Format("ชื่อ #{0} มีอายุ #{1} ซึ่งอยู่นอกช่วงที่ยอมรับได้", {[Name], [Age]}),
                        "อายุต้องอยู่ระหว่าง 0 ถึง 120 ปี",
                        {[Age], "0-120"},
                        "ERR_AGE_INVALID"
                    )
                else
                    "Valid"
            catch (e) => e
    )
in
    ValidateAge

Result:

ตารางที่แสดงผลการตรวจสอบแต่ละแถว โดยแถวที่ 2 (Jane อายุ -5) จะมี error object ที่มี Reason="AgeOutOfRange" และแถวอื่นแสดง "Valid"

FAQs

ความแตกต่างระหว่าง Error.Record และ error คืออะไร?

ผมจะอธิบาย error ใช้สำหรับการแจ้งข้อผิดพลาดแบบง่ายๆ เช่น error “Something went wrong” ส่วน Error.Record ใช้สำหรับสร้างระเบียนข้อผิดพลาดที่มีข้อมูลโครงสร้าง ประกอบด้วย reason, message, detail, parameters และ errorCode ทำให้สามารถจัดการข้อผิดพลาดได้ละเอียดและมีประสิทธิภาพกว่า

ควรใช้ Error.Record ร่วมกับ try-catch หรือ try-otherwise?

ผมแนะนำให้ใช้ error Error.Record(…) ภายใน try block แล้ว catch ไว้ เพราะอย่างนี้คุณสามารถเข้าถึงข้อมูลข้อผิดพลาดทั้งหมดที่ Error.Record สร้างให้ได้ ส่วน try-otherwise ใช้สำหรับเงื่อนไขแล้ว จึงไม่เหมาะสำหรับ Error.Record

พารามิเตอร์ไหนบ้างที่เป็นสิ่งสำคัญจริงๆ?

ผม reason เป็นพารามิเตอร์บังคับเท่านั้น ส่วนอื่นๆ ทั้งหมดเป็นตัวเลือก แต่ส่วนตัวผม ถ้าต้องสร้างข้อผิดพลาด ผมอยากให้เติม message กับ errorCode ด้วย เพราะมันช่วยให้ผู้ใช้เข้าใจปัญหาได้และสามารถค้นหาจัดหมวดหมู่ข้อผิดพลาดได้ในภายหลัง

Resources & Related

Additional Notes

Error.Record สร้างข้อมูลข้อผิดพลาด (error record) ที่มีโครงสร้างชัดเจน ด้วยการระบุ reason, message, detail และ errorCode ทำให้การจัดการข้อผิดพลาดเป็นไปอย่างมีระเบียบ แทนที่จะปล่อยให้ Power Query สร้างข้อความข้อผิดพลาดแบบสุ่มๆ

ที่เจ๋งคือ Error.Record ช่วยให้คุณสร้างข้อผิดพลาดที่กำหนดเองกับข้อมูลบริบท เช่น รหัสลูกค้าที่ไม่ถูกต้อง หรือข้อมูลที่ไม่ตรงกับรูปแบบ ทำให้ผู้ใช้เข้าใจปัญหาได้ชัดเจนมากกว่าข้อความผิดพลาดปกติ

ส่วนตัวผม Error.Record ถูกใช้ประจำเวลาต้องตรวจสอบเงื่อนไขข้อมูลขาเข้า เพราะมันช่วยให้ debugging ง่ายขึ้นจริงๆ แล้วลูกค้าเข้าใจปัญหาได้มากกว่าข้อความผิดพลาดปกติของ Power Query 😎

Leave a Reply

Your email address will not be published. Required fields are marked *