อ่านในภาษาอังกฤษ

แชร์ผ่าน


ข้อผิดพลาด

ข้อผิดพลาดในภาษาสูตร Power Query M เป็นข้อบ่งชี้ว่ากระบวนการประเมินนิพจน์ไม่สามารถให้ผลลัพธ์เป็นค่าได้ ข้อผิดพลาดเกิดจากตัวดําเนินการและฟังก์ชันที่เป็นไปตามเงื่อนไขของข้อผิดพลาดหรือโดยใช้นิพจน์ข้อผิดพลาด ข้อผิดพลาดได้รับการจัดการโดยใช้นิพจน์ try เมื่อเกิดข้อผิดพลาด จะมีการระบุค่าที่สามารถใช้เพื่อระบุสาเหตุที่เกิดข้อผิดพลาด

นิพจน์ Try

นิพจน์ try แปลงค่าและข้อผิดพลาดเป็นค่าเรกคอร์ดที่ระบุว่านิพจน์ try จัดการกับข้อผิดพลาดหรือไม่ และค่าที่เหมาะสมหรือเรกคอร์ดข้อผิดพลาดถูกแยกออกเมื่อจัดการข้อผิดพลาดหรือไม่ ตัวอย่างเช่น พิจารณานิพจน์ต่อไปนี้ที่ทําให้เกิดข้อผิดพลาด และจัดการทันที:

try error "negative unit count"

นิพจน์นี้จะประเมินเป็นค่าเรกคอร์ดที่ซ้อนกันต่อไปนี้ โดย [HasError], [Error]อธิบายการค้นหาเขตข้อมูล และ [Message] ในตัวอย่างหน่วย-ราคาก่อนหน้า

เรกคอร์ดข้อผิดพลาด

[
    HasError = true,
    Error =
        [  
            Reason = "Expression.Error",
            Message = "negative unit count",
            Detail = null
        ]
]

กรณีทั่วไปคือการแทนที่ข้อผิดพลาดด้วยค่าเริ่มต้น คุณสามารถใช้นิพจน์ try ด้วยส่วนคําสั่งอื่นที่เลือกได้เพื่อให้ได้ผลลัพธ์ในรูปแบบกะทัดรัด:

try error "negative unit count" otherwise 42
// equals 42

ตัวอย่างข้อผิดพลาด

let Sales =
        [
        ProductName = "Fishing rod",
            Revenue = 2000,
            Units = 1000,
            UnitPrice = if Units = 0 then error "No Units"
                    else Revenue / Units
        ],

    //Get UnitPrice from Sales record
        textUnitPrice = try Number.ToText(Sales[UnitPrice]),
    Label = "Unit Price: " &
        (if textUnitPrice[HasError] then textUnitPrice[Error][Message]
        //Continue expression flow
            else textUnitPrice[Value])
in
    Label

ตัวอย่างก่อนหน้านี้เข้าถึง Sales[UnitPrice] เขตข้อมูล และจัดรูปแบบค่าทําให้เกิดผลลัพธ์:

"Unit Price: 2"

หากเขตข้อมูล Units เป็นศูนย์ UnitPrice จากนั้นเขตข้อมูล จะทําให้เกิดข้อผิดพลาดซึ่งจะถูกจัดการโดยลอง จากนั้น ค่าผลลัพธ์จะเป็นดังนี้:

"No Units"