การจัดการข้อผิดพลาด
หมายเหตุ
ลักษณะการทำงานที่อธิบายในบทความนี้จะใช้ได้เฉพาะเมื่อคุณลักษณะรุ่นพรีวิวของ การจัดการข้อผิดพลาดระดับสูตร ด้วยการเปิด การตั้งค่า>คุณลักษณะที่กำลังจะมาถึง>พรีวิว ข้อมูลเพิ่มเติม: การควบคุมคุณลักษณะที่จะเปิดใช้งาน
เกิดข้อผิดพลาดขึ้น เครือข่ายหยุดทำงาน พื้นที่เก็บข้อมูลเต็ม มีค่าที่ไม่คาดคิดเข้ามา สิ่งสำคัญคือตรรกะของคุณยังคงทำงานได้อย่างถูกต้องเมื่อเผชิญกับปัญหาที่อาจเกิดขึ้น
ตามค่าเริ่มต้น ข้อผิดพลาดจะส่งผ่านสูตรของแอปและจะรายงานไปยังผู้ใช้ปลายทางของแอป ด้วยวิธีนี้ ผู้ใช้จะรู้ว่ามีบางสิ่งที่ไม่คาดคิดเกิดขึ้น พวกเขาอาจแก้ไขปัญหาได้ด้วยตนเองโดยใช้ข้อมูลอื่นหรือสามารถรายงานปัญหาไปยังเจ้าของแอปได้
ในฐานะผู้สร้างแอป คุณสามารถควบคุมข้อผิดพลาดในแอปของคุณได้:
- การตรวจหาและการจัดการข้อผิดพลาด หากมีโอกาสเกิดข้อผิดพลาด คุณสามารถเขียนสูตรของแอปเพื่อตรวจหาเงื่อนไขข้อผิดพลาดและลองดำเนินการใหม่อีกครั้ง ผู้ใช้ไม่จำเป็นต้องกังวลว่าจะเกิดข้อผิดพลาดเนื่องจากผู้สร้างคำนึงถึงความเป็นไปได้นี้ ซึ่งดำเนินการโดยฟังก์ชัน IfError, IsError และ IsErrorOrBlank ภายในสูตร
- การรายงานข้อผิดพลาด ถ้าข้อผิดพลาดไม่ได้รับการจัดการในสูตรที่พบ ข้อผิดพลาดนั้นจะถูกเลื่อนไปจนถึงตัวจัดการ App.OnError ที่นี่ ข้อผิดพลาดไม่สามารถถูกแทนที่ได้อีกต่อไปเนื่องจากเกิดขึ้นแล้วและเป็นส่วนหนึ่งของการคำนวณสูตร แต่คุณสามารถใช้ App.OnError เพื่อควบคุมวิธีรายงานข้อผิดพลาดไปยังผู้ใช้ปลายทาง รวมถึงการระงับการรายงานข้อผิดพลาดทั้งหมดพร้อมกัน App.OnError ยังให้จุดคอขวดทั่วไปสำหรับการรายงานข้อผิดพลาดในแอปพลิเคชันทั้งหมดอีกด้วย
- การสร้างและการส่งข้อผิดพลาดอีกครั้ง สุดท้าย คุณอาจตรวจพบเงื่อนไขข้อผิดพลาดด้วยตรรกะของคุณเอง ซึ่งเป็นเงื่อนไขเฉพาะสำหรับแอปของคุณ ใช้ฟังก์ชัน Error เพื่อสร้างข้อผิดพลาดที่กำหนดเอง ฟังก์ชัน Error ยังใช้ส่งข้อผิดพลาดอีกครั้งหลังจากการสอบถามใน IfError หรือ App.OnError
เริ่มต้นใช้งาน
ลองเริ่มต้นด้วยตัวอย่างง่ายๆ กัน
- สร้างหน้าจอใหม่ในแอปพื้นที่ทำงาน Power Apps
- แทรกตัวควบคุม TextInput โดยจะมีค่าเริ่มต้นเป็นชื่อ TextInput1
- แทรกตัวควบคุม Label
- ตั้งค่าคุณสมบัติ Text ของตัวควบคุม Label ไปที่สูตร
1/Value( TextInput1.Text )
เรามีข้อผิดพลาดเนื่องจากข้อความเริ่มต้นของตัวควบคุม TextInput เป็น "Text input"
ซึ่งแปลงเป็นตัวเลขไม่ได้ ตามค่าเริ่มต้น นี่เป็นสิ่งที่ดี: ผู้ใช้ปลายทางจะได้รับการแจ้งเตือนว่ามีบางอย่างไม่ทำงานตามที่คาดหวังในแอป
เห็นได้ชัดว่าเราไม่ต้องการให้ข้อผิดพลาดแสดงต่อผู้ใช้ทุกครั้งที่เริ่มแอปนี้ เป็นไปได้ว่า "Text input"
ไม่ใช่ค่าเริ่มต้นที่ถูกต้องสำหรับช่องป้อนข้อความ หากต้องการแก้ไขปัญหานี้ ให้เปลี่ยนคุณสมบัติ Default ของตัวควบคุม TextInput เป็น:
Blank()
อืม ตอนนี้เรามีข้อผิดพลาดอื่น การดำเนินการทางคณิตศาสตร์ที่เป็น ค่าว่าง เช่น การหาร จะบังคับให้ค่าว่างเป็นศูนย์ และนั่นทำให้เกิดข้อผิดพลาดในการหารด้วยศูนย์ เพื่อแก้ไขปัญหานี้ เราจำเป็นต้องตัดสินใจว่าลักษณะการทำงานที่เหมาะสมสำหรับสถานการณ์นี้ในแอปนี้คืออะไร คำตอบอาจเป็นการแสดง ค่าว่าง เมื่อป้อนข้อความเป็น ค่าว่าง เราสามารถทำได้โดยการรวมสูตรของเราด้วยฟังก์ชัน IfError:
IfError( 1/Value( TextInput1.Text ), Blank() )
ตอนนี้ข้อผิดพลาดจะถูกแทนที่ด้วยค่าที่ถูกต้องและแบนเนอร์ข้อผิดพลาดก็หายไป แต่เราอาจพลาดได้ IfError ที่เราใช้ครอบคลุมข้อผิดพลาด ทั้งหมด รวมถึงการพิมพ์ค่าที่ไม่ถูกต้อง เช่น "hello"
เราสามารถแก้ไขปัญหานี้ได้โดยการปรับ IfError ของเราให้จัดการกับการหารด้วยศูนย์เท่านั้น และส่งข้อผิดพลาดอื่นๆ ทั้งหมดอีกครั้ง:
IfError( 1/Value( TextInput1.Text ),
If( FirstError.Kind = ErrorKind.Div0, Blank(), Error( FirstError ) ) )
ดังนั้น ลองเรียกใช้แอปของเราและลองใช้ค่าต่างๆ
หากไม่มีค่าใดๆ เช่น เมื่อแอปเริ่มทำงาน จะไม่มีคำตอบปรากฏขึ้นเนื่องจากค่าเริ่มต้นคือ ค่าว่าง แต่ก็ไม่มีข้อผิดพลาดที่แสดงเป็น IfError แทนที่ข้อผิดพลาดการหารด้วยศูนย์
ถ้าเราพิมพ์ 4 เราจะได้ผลลัพธ์ที่คาดหวังเป็น 0.25:
และถ้าเราพิมพ์บางอย่างไม่ถูกต้อง เช่น hello
เราก็จะได้รับแบนเนอร์แสดงข้อผิดพลาด:
นี่เป็นตัวอย่างเบื้องต้นง่ายๆ การจัดการข้อผิดพลาดสามารถทำได้หลายวิธี ขึ้นอยู่กับความต้องการของแอป:
- แทนที่จะเป็นแบนเนอร์ข้อผิดพลาด เราอาจแสดง "#Error" ในตัวควบคุม label ที่มีสูตร เพื่อให้ประเภทของการแทนที่เข้ากันได้กับอาร์กิวเมนต์แรกเป็น IfError เราจำเป็นต้องแปลงผลลัพธ์ที่เป็นตัวเลขเป็นสตริงข้อความอย่างชัดเจนด้วยฟังก์ชัน Text
IfError( Text( 1/Value( TextInput1.Text ) ), If( FirstError.Kind = ErrorKind.Div0, Blank(), "#Error" )
- แทนที่จะรวมอินสแตนซ์เฉพาะนี้ด้วย IfError เราสามารถเขียนตัวจัดการ App.OnError แบบรวมศูนย์ เราไม่สามารถแทนที่สตริงที่แสดงด้วย "#Error" เนื่องจากข้อผิดพลาดได้เกิดขึ้นแล้ว และ App.OnError มีไว้เพื่อควบคุมการรายงานเท่านั้น
If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ) )
การกระจายข้อผิดพลาด
ข้อผิดพลาดส่งผ่านสูตรมากเท่ากับที่ทำใน Excel ตัวอย่างเช่น ใน Excel ถ้าเซลล์ A1
มีสูตร =1/0
A1 จะแสดงค่าข้อผิดพลาด #DIV0!
:
ถ้าเซลล์ A2
อ้างถึง A1
ด้วยสูตร เช่น =A1*2
ข้อผิดพลาดก็จะกระจายผ่านสูตรนั้นด้วย:
ข้อผิดพลาดจะแทนที่ค่าที่อาจมีการคำนวณอย่างอื่น ไม่มีผลลัพธ์สำหรับการคูณในเซลล์ A2
มีเพียงข้อผิดพลาดจากการหารใน A1
Power Fx ทำงานในลักษณะเดียวกัน โดยทั่วไป หากมีการระบุข้อผิดพลาดเป็นอาร์กิวเมนต์ของฟังก์ชันหรือตัวดำเนินการ การดำเนินการจะไม่เกิดขึ้นและข้อผิดพลาดในการป้อนจะส่งผ่านเป็นผลลัพธ์ของการดำเนินการ ตัวอย่างเช่น Mid( Text( 1/0 ), 1, 1 )
จะส่งคืนข้อผิดพลาดการหารด้วยศูนย์ เนื่องจากข้อผิดพลาดส่วนใหญ่ที่อยู่ด้านในส่งผ่านฟังก์ชัน Text และฟังก์ชัน Mid:
โดยทั่วไป ข้อผิดพลาดไม่ได้ส่งผ่านคุณสมบัติตัวควบคุม Power Apps ลองขยายตัวอย่างก่อนหน้าด้วยตัวควบคุมเพิ่มเติมที่แสดงว่าคุณสมบัติ Text
ของป้ายชื่อมีสถานะข้อผิดพลาด:
เป็นเรื่องปกติที่ข้อผิดพลาดจะไม่กระจายผ่านตัวควบคุม เนื่องจากระบบจะสังเกตข้อผิดพลาดในการป้อนข้อมูลที่คุณสมบัติตัวควบคุมทั้งหมด ข้อผิดพลาดจะไม่หายไป
ฟังก์ชันและตัวดำเนินการส่วนใหญ่เป็นไปตามกฎ "ข้อผิดพลาดเข้า ข้อผิดพลาดออก" แต่มีข้อยกเว้นบางประการ ฟังก์ชัน IsError, IsErrorOrBlank และ IfError ออกแบบมาสำหรับการทำงานกับข้อผิดพลาด ดังนั้นจึงไม่สามารถส่งกลับข้อผิดพลาดแม้ว่าจะมีการส่งผ่านไปยังข้อผิดพลาดเหล่านั้นก็ตาม
การสังเกตข้อผิดพลาด
ไม่พบข้อผิดพลาดจนกว่าจะใช้ค่า
ด้วยเหตุนี้ ฟังก์ชัน If และ Select อาจไม่ส่งกลับข้อผิดพลาดหากมีการส่งผ่านเข้ามา ลองป้อนสูตร If( false, 1/0, 3 )
มีข้อผิดพลาดการหารด้วยศูนย์อยู่ในสูตรนี้ แต่เนื่องจาก If
ไม่ได้ใช้สาขานั้นเพราะ false
, Power Fx และ Power Apps จะไม่รายงานข้อผิดพลาด:
การใช้ฟังก์ชัน Set ที่มีข้อผิดพลาดจะไม่รายงานข้อผิดพลาดในจุดที่มีข้อผิดพลาดอยู่ในตัวแปร ตัวอย่างเช่น ใน Power Apps ต่อไปนี้เป็นสูตรใน App.OnStart ที่วางข้อผิดพลาดการหารด้วยศูนย์ลงในตัวแปร x
:
ไม่มีการรายงานข้อผิดพลาด เนื่องจาก x
ไม่ได้ถูกอ้างอิง อย่างไรก็ตาม เมื่อเราเพิ่มตัวควบคุม label และตั้งค่าคุณสมบัติ Text เป็น x
ข้อผิดพลาดจะปรากฏขึ้น:
คุณสามารถสังเกตข้อผิดพลาดภายในสูตรด้วยฟังก์ชัน IfError, IsError และ IsErrorOrBlank ด้วยฟังก์ชันเหล่านี้ คุณสามารถส่งคืนค่าอื่น ดำเนินการอื่น หรือแก้ไขข้อผิดพลาดก่อนที่จะมีการสังเกตและรายงาน
การรายงานข้อผิดพลาด
หลังจากพบข้อผิดพลาด ขั้นตอนต่อไปคือการรายงานข้อผิดพลาดไปยังผู้ใช้ปลายทาง
ซึ่งต่างจาก Excel ตรงที่ไม่มีตำแหน่งที่สะดวกในการแสดงผลข้อผิดพลาดเสมอ เนื่องจากผลลัพธ์ของสูตรอาจทำให้คุณสมบัติ เช่น พิกัด X และ Y ของตัวควบคุมไม่มีตำแหน่งที่สะดวกในการแสดงข้อความ โฮสต์ Power Fx แต่ละตัวจะควบคุมวิธีแสดงข้อผิดพลาดต่อผู้ใช้ปลายทางในท้ายที่สุด และผู้สร้างจะควบคุมกระบวนการนี้มากน้อยเพียงใด ใน Power Apps แบนเนอร์ข้อผิดพลาดจะปรากฏขึ้นและ App.OnError จะถูกใช้เพื่อควบคุมวิธีการรายงานข้อผิดพลาด
โปรดทราบว่า App.OnError ไม่สามารถแทนที่ข้อผิดพลาดในลักษณะเดียวกับที่ IfError ทำได้ ในตอนที่มีการเรียก App.OnError ข้อผิดพลาดได้เกิดขึ้นแล้ว และมีการกระจายผลลัพธ์ผ่านสูตรอื่น App.OnError ควบคุมเฉพาะวิธีการรายงานข้อผิดพลาดไปยังผู้ใช้ปลายทางเท่านั้น และยังมีตัวเชื่อมให้ผู้สร้างบันทึกข้อผิดพลาดหากต้องการ
ตัวแปรขอบเขต FirstError และ AllErrors ให้ข้อมูลบริบทเกี่ยวกับข้อผิดพลาดหรือข้อผิดพลาดต่างๆ ข้อมูลนี้ให้ข้อมูลเกี่ยวกับประเภทของข้อผิดพลาดและที่มาของข้อผิดพลาดและตำแหน่งที่พบข้อผิดพลาด
การหยุดทำงานหลังจากเกิดข้อผิดพลาด
สูตรลักษณะการทำงานสนับสนุนการดำเนินการ การแก้ไขฐานข้อมูล และการเปลี่ยนสถานะ สูตรเหล่านี้อนุญาตให้ดำเนินการมากกว่าหนึ่งรายการในลำดับโดยใช้ ;
ตัวดำเนินการเชื่อมโยง (หรือ ;;
ขึ้นอยู่กับตำแหน่งที่ตั้ง)
ตัวอย่างเช่น ในกรณีนี้ ตัวควบคุม grid กำลังแสดงสิ่งที่อยู่ในตาราง T
การเลือกแต่ละปุ่มจะเปลี่ยนสถานะในตารางนี้ด้วยการเรียก Patch สองครั้ง:
ในสูตรลักษณะการทำงานแบบลูกโซ่ การดำเนินการจะไม่หยุดหลังจากเกิดข้อผิดพลาดครั้งแรก มาแก้ไขตัวอย่างของเราเพื่อส่งหมายเลขดัชนีที่ไม่ถูกต้องในการเรียก Patch ครั้งแรก Patch ครั้งที่สองจะดำเนินต่อไปแม้ว่าจะมีข้อผิดพลาดก่อนหน้านี้ก็ตาม ข้อผิดพลาดแรกถูกรายงานไปยังผู้ใช้ปลายทาง และแสดงเป็นข้อผิดพลาดในสตูดิโอบนตัวควบคุม:
IfError สามารถใช้เพื่อหยุดการดำเนินการหลังจากเกิดข้อผิดพลาด คล้ายกับฟังก์ชัน If อาร์กิวเมนต์ที่สามของฟังก์ชันนี้จัดเตรียมตำแหน่งสำหรับวางการดำเนินการที่ควรจะดำเนินการก็ต่อเมื่อไม่มีข้อผิดพลาด:
หากพบข้อผิดพลาดระหว่างการวนซ้ำหนึ่งครั้งของ ForAll การวนซ้ำที่เหลือจะไม่หยุด ForAll ได้รับการออกแบบมาเพื่อดำเนินการแต่ละการวนซ้ำโดยอิสระ ช่วยให้สามารถดำเนินการแบบขนานได้ เมื่อ ForAll เสร็จสมบูรณ์ ข้อผิดพลาดจะถูกส่งกลับ ซึ่งประกอบด้วยข้อผิดพลาดทั้งหมดที่พบ (โดยการตรวจสอบ AllErrors ใน IfError หรือ App.OnError)
ตัวอย่างเช่น สูตรต่อไปนี้จะส่งผลให้ ForAll ส่งคืนข้อผิดพลาดสองรายการ (สำหรับการหารด้วยศูนย์สำหรับ Value
เป็น 0 สองครั้ง) และ Collection
จะมีสามเรกคอร์ด (สำหรับเมื่อ Value
ไม่ใช่ 0): [1, 2, 3]
Clear( Collection );
ForAll( [1,0,2,0,3], If( 1/Value > 0, Collect( Collection, Value ) ) );
การทำงานกับข้อผิดพลาดหลายรายการ
เนื่องจากสูตรลักษณะการทำงานสามารถดำเนินการได้มากกว่าหนึ่งการกระทำ จึงอาจพบข้อผิดพลาดมากกว่าหนึ่งรายการได้เช่นกัน
ตามค่าเริ่มต้น ข้อผิดพลาดแรกจะถูกรายงานไปยังผู้ใช้ปลายทาง ในตัวอย่างนี้ การเรียก Patch ทั้งคู่จะล้มเหลว ครั้งที่สองมีข้อผิดพลาดการหารด้วยศูนย์ เฉพาะข้อผิดพลาดแรก (เกี่ยวกับดัชนี) เท่านั้นที่จะแสดงต่อผู้ใช้:
ฟังก์ชัน IfError และ App.OnError สามารถเข้าถึงข้อผิดพลาดทั้งหมดที่พบกับตัวแปรขอบเขต AllErrors ในกรณีนี้ เราสามารถตั้งค่านี้เป็นตัวแปรส่วนกลางและดูข้อผิดพลาดทั้งสองที่พบ ข้อผิดพลาดจะปรากฏในตารางตามลำดับเดียวกันกับตอนที่พบ:
สามารถส่งคืนข้อผิดพลาดหลายรายการในสูตรที่ไม่ใช่ลักษณะการทำงานได้เช่นกัน ตัวอย่างเช่น การใช้ฟังก์ชัน Patch กับชุดงานของเรกคอร์ดที่จะอัปเดตสามารถส่งคืนข้อผิดพลาดหลายรายการ หนึ่งรายการสำหรับแต่ละเรกคอร์ดที่ล้มเหลว
ตารางข้อผิดพลาด
อย่างที่เราเห็นก่อนหน้านี้ ข้อผิดพลาดสามารถเก็บไว้ในตัวแปรได้ ข้อผิดพลาดยังสามารถรวมอยู่ในโครงสร้างข้อมูล เช่น ตาราง นี่เป็นสิ่งสำคัญเพื่อให้ข้อผิดพลาดในเรกคอร์ดใดเรกคอร์ดหนึ่งไม่สามารถทำให้ทั้งตารางเป็นโมฆะได้
ตัวอย่างเช่น พิจารณาตัวควบคุม data table นี้ใน Power Apps:
การคำนวณใน AddColumns พบข้อผิดพลาดการหารด้วยศูนย์สำหรับค่าใดค่าหนึ่ง สำหรับเรกคอร์ดหนึ่งนั้น คอลัมน์ Reciprocal มีค่าข้อผิดพลาด (การหารด้วยศูนย์) แต่เรกคอร์ดอื่นๆ ไม่มี และใช้งานได้ IsError( Index( output, 2 ) )
ส่งคืนค่า false และ IsError( Index( output, 2 ).Value )
ส่งคืนค่า true
หากเกิดข้อผิดพลาดขึ้นเมื่อกรองตาราง เรกคอร์ดทั้งหมดจะเป็นข้อผิดพลาดแต่ยังคงส่งคืนในผลลัพธ์ เพื่อให้ผู้ใช้ทราบว่ามีบางอย่างอยู่ที่นั่นและมีปัญหา
ใช้ตัวอย่างนี้ ที่นี่ ตารางต้นฉบับไม่มีข้อผิดพลาด แต่การกรองจะสร้างข้อผิดพลาดเมื่อใดก็ตามที่ ค่า เท่ากับ 0:
ค่า -5 และ -3 ถูกกรองออกอย่างเหมาะสม ค่า 0 ส่งผลให้เกิดข้อผิดพลาดในการประมวลผลตัวกรอง ดังนั้นจึงไม่ชัดเจนว่าควรรวมเรกคอร์ดไว้ในผลลัพธ์หรือไม่ เพื่อเพิ่มความโปร่งใสสูงสุดให้กับผู้ใช้ปลายทางและช่วยผู้สร้างแก้ไขจุดบกพร่อง เราได้รวมเรกคอร์ดข้อผิดพลาดแทนต้นฉบับ ในกรณีนี้ IsError( Index( output, 2 ) )
ส่งคืนเป็นจริง
ข้อผิดพลาดของแหล่งข้อมูล
ฟังก์ชันที่ปรับเปลี่ยนข้อมูลในแหล่งข้อมูล เช่น Patch, Collect, Remove, RemoveIf, Update, UpdateIf และ SubmitForm จะรายงานข้อผิดพลาดสองแบบ:
- แต่ละฟังก์ชันเหล่านี้จะส่งคืนค่าข้อผิดพลาดเป็นผลลัพธ์ของการดำเนินการ ตรวจพบข้อผิดพลาดได้ด้วย IsError และมีการแทนที่หรือระงับด้วย IfError และ App.OnError ตามปกติ
- หลังจากการดำเนินการ ฟังก์ชัน Errors จะส่งคืนข้อผิดพลาดสำหรับการดำเนินการก่อนหน้านี้ด้วย ซึ่งจะมีประโยชน์สำหรับการแสดงข้อความแสดงข้อผิดพลาดบนหน้าจอแบบฟอร์มโดยไม่จำเป็นต้องจับภาพข้อผิดพลาดในตัวแปรสถานะ
ตัวอย่างเช่น สูตรนี้จะตรวจหาข้อผิดพลาดจาก Collect และแสดงข้อความแสดงข้อผิดพลาดที่กำหนดเอง:
IfError( Collect( Names, { Name: "duplicate" } ),
Notify( $"OOPS: { FirstError.Message }", NotificationType.Warning ) )
ฟังก์ชัน Errors ยังส่งคืนข้อมูลเกี่ยวกับข้อผิดพลาดที่ผ่านมาระหว่างการดำเนินการรันไทม์ด้วย ซึ่งจะมีประโยชน์สำหรับการแสดงข้อผิดพลาดบนหน้าจอแบบฟอร์มโดยไม่จำเป็นต้องจับภาพข้อผิดพลาดในตัวแปรสถานะ
การส่งข้อผิดพลาดอีกครั้ง
บางครั้งอาจมีข้อผิดพลาดที่อาจเกิดขึ้นและสามารถเพิกเฉยได้อย่างปลอดภัย ภายใน IfError และ App.OnError หากตรวจพบข้อผิดพลาดที่ควรส่งต่อไปยังตัวจัดการที่สูงกว่าถัดไป สามารถส่งส่งอีกครั้งด้วย Error( AllErrors )
สร้างข้อผิดพลาดของคุณเอง
คุณยังสามารถสร้างข้อผิดพลาดของคุณเองได้ด้วยฟังก์ชัน Error
หากคุณสร้างข้อผิดพลาดของคุณเอง ขอแนะนำให้คุณใช้ค่าที่สูงกว่า 1,000 เพื่อหลีกเลี่ยงความขัดแย้งที่อาจเกิดขึ้นกับค่าข้อผิดพลาดของระบบในอนาคต
ค่า ErrorKind enum
ErrorKind enum | มูลค่า | รายละเอียด |
---|---|---|
AnalysisError | 18 | ข้อผิดพลาดของระบบ มีปัญหากับการวิเคราะห์ของคอมไพเลอร์ |
BadLanguageCode | 14 | มีการใช้รหัสภาษาที่ไม่ถูกต้องหรือไม่รู้จัก |
BadRegex | 15 | นิพจน์ปกติที่ไม่ถูกต้อง ตรวจสอบไวยากรณ์ที่ใช้กับฟังก์ชัน IsMatch, Match หรือ MatchAll |
ข้อขัดแย้ง | 6 | เรกคอร์ดที่กำลังอัปเดตมีการเปลี่ยนแปลงที่ต้นทางแล้ว และข้อขัดแย้งจำเป็นต้องได้รับการแก้ไข วิธีแก้ปัญหาทั่วไปคือบันทึกการเปลี่ยนแปลงในเครื่อง รีเฟรชเรกคอร์ด และนำการเปลี่ยนแปลงไปใช้ใหม่ |
ConstraintViolated | 8 | เรกคอร์ดไม่ผ่านการตรวจสอบข้อจำกัดบนเซิร์ฟเวอร์ |
CreatePermission | 3 | ผู้ใช้ไม่มีสิทธิ์ในการสร้างเรกคอร์ดสำหรับแหล่งข้อมูล ตัวอย่างเช่น มีการเรียกฟังก์ชัน Collect |
DeletePermissions | 5 | ผู้ใช้ไม่มีสิทธิ์ในการลบเรกคอร์ดสำหรับแหล่งข้อมูล ตัวอย่างเช่น มีการเรียกฟังก์ชัน Remove |
Div0 | 13 | การหารด้วยศูนย์ |
EditPermissions | 4 | ผู้ใช้ไม่มีสิทธิ์ในการสร้างเรกคอร์ดสำหรับแหล่งข้อมูล ตัวอย่างเช่น มีการเรียกฟังก์ชัน Patch |
GeneratedValue | 9 | ค่าถูกส่งไปยังเซิร์ฟเวอร์อย่างไม่ถูกต้องสำหรับฟิลด์ที่เซิร์ฟเวอร์คำนวณโดยอัตโนมัติ |
InvalidFunctionUsage | 16 | การใช้ฟังก์ชันไม่ถูกต้อง บ่อยครั้งที่อาร์กิวเมนต์ของฟังก์ชันอย่างน้อยหนึ่งรายการไม่ถูกต้องหรือใช้ในลักษณะที่ไม่ถูกต้อง |
FileNotFound | 17 | ไม่พบที่เก็บข้อมูล SaveData |
InsufficientMemory | 21 | มีหน่วยความจำหรือที่เก็บข้อมูลบนอุปกรณ์ไม่เพียงพอสำหรับการดำเนินการ |
InvalidArgument | 25 | อาร์กิวเมนต์ที่ไม่ถูกต้องถูกส่งผ่านไปยังฟังก์ชัน |
ภายใน | 26 | ข้อผิดพลาดของระบบ มีปัญหาภายในกับฟังก์ชันใดฟังก์ชันหนึ่ง |
MissingRequired | 2 | ฟิลด์ที่จำเป็นของเรกคอร์ดขาดหายไป |
เครือข่าย | 23 | มีปัญหาเกิดขึ้นกับการสื่อสารของเครือข่าย |
None | 12 | ข้อผิดพลาดของระบบ ไม่มีข้อผิดพลาด |
ไม่สามารถใช้งานได้ | 27 | ไม่มีค่า มีประโยชน์ในการแยกความแตกต่างของค่า ว่าง ที่สามารถถือเป็นศูนย์ในการคำนวณตัวเลขจากค่าว่างที่ควรตั้งค่าสถานะว่าเป็นปัญหาที่อาจเกิดขึ้นหากใช้ค่านั้น |
NotFound | 7 | ไม่พบเรกคอร์ด ตัวอย่างเช่น เรกคอร์ดที่จะแก้ไขในฟังก์ชัน Patch |
NotSupported | 20 | การดำเนินการไม่ได้รับการสนับสนุนโดยเครื่องเล่นหรืออุปกรณ์นี้ |
ตัวเลข | 24 | มีการใช้ฟังก์ชันตัวเลขในลักษณะที่ไม่เหมาะสม ตัวอย่างเช่น Sqrt ที่มี -1. |
QuoteExceeded | 22 | เกินโควตาที่เก็บข้อมูล |
ReadOnlyValue | 10 | คอลัมน์เป็นแบบอ่านอย่างเดียวและไม่สามารถแก้ไขได้ |
ReadPermission | 19 | ผู้ใช้ไม่มีสิทธิ์ในการอ่านเรกคอร์ดสำหรับแหล่งข้อมูล |
ซิงค์ | 1 | มีการรายงานข้อผิดพลาดโดยแหล่งข้อมูล ตรวจสอบคอลัมน์ข้อความสำหรับข้อมูลเพิ่มเติม |
ไม่รู้จัก | 12 | เกิดข้อผิดพลาดขึ้น แต่เป็นชนิดที่ไม่รู้จัก |
การตรวจสอบความถูกต้อง | 11 | เรกคอร์ดไม่ผ่านการตรวจสอบความถูกต้อง |