VMError (Pelaporan Error)
VMError adalah modul pelaporan error terstruktur bawaan yang disertakan bersama LightVM untuk menjelaskan kegagalan runtime, error validasi, dan masalah sistem host melalui kode error serta diagnostik kontekstual. Enum VMError pada Rust menyimpan detail setiap kegagalan, sementara pemformatnya menghasilkan pesan berpemetaan warna dengan informasi debugging yang dapat dikonfigurasi.
Cara Kerja VMError
VMError menggunakan Enum Error Terstruktur (VMError) untuk merepresentasikan kegagalan dan Pemformat Diagnostik (Display) untuk mengubahnya menjadi laporan yang mudah dibaca. Pemformat membaca konfigurasi lokal thread jika tersedia, atau menggunakan konfigurasi global, lalu menggabungkan pesan error dengan metadata, tautan dokumentasi, backtrace internal opsional, dan petunjuk. Pemformatan error tidak dengan sendirinya menghentikan proses; pemanggil menentukan cara menangani kegagalan tersebut.
- Varian Error Rust Terstruktur: Merepresentasikan stack overflow dan underflow, opcode tidak valid, ketidakcocokan tipe, akses di luar batas, target lompatan tidak valid, fitur terbatas, batas sumber daya, modul tidak sah, nilai tidak valid, dan error sistem. Field varian menyimpan detail yang relevan seperti batas stack, tipe yang diharapkan dan ditemukan, panjang koleksi, serta nama modul.
- Konteks Instruction Pointer: Menyertakan
ipyang tersimpan dan tipe error dalam laporan untuk varian yang memiliki konteks instruksi.ExcessiveNopPadding,InvalidMaxTicksConfig, danTickLimitExceededtidak menyimpanip, sehingga pemformat menampilkan0sebagai penanda pengganti. LaporanSystemErrorpada Rust tidak menyertakan metadata instruction pointer dan tipe error. - Kode Error Diagnostik: Memetakan varian runtime dan validasi ke
LVM001–LVM017sertaSystemErrorkeLVM500melaluierror_code(), sehingga tersedia pengenal yang konsisten untuk penelusuran masalah. - Petunjuk & Penjelasan yang Dapat Dikonfigurasi: Menggunakan pengaturan
VMErrorContainer(hint,explain,diagnostic_links, danbacktrace) untuk mengontrol keluaran diagnostik. Petunjuk dan tautan dokumentasi diaktifkan secara bawaan, sementara penjelasan dan backtrace dinonaktifkan. Ketika petunjuk diaktifkan,explainmemilih penjelasan panjang sebagai pengganti petunjuk singkat. - Tautan Dokumentasi Error: Menggunakan
diagnostic_link()untuk menghasilkan URL dokumentasi bagi setiap kode error. Pengaturandiagnostic_linksmengontrol apakah pemformat menyertakan URL tersebut, secara terpisah dari petunjuk. - Backtrace Internal Opsional: Ketika
backtracediaktifkan, memformat rekaman stack lokal thread yang telah ditangkap sebelumnya dengan maksimal lima simbol LightVM yang cocok, tanpa menyertakan fungsi pembantu backtrace. Jika rekaman atau simbol yang cocok tidak tersedia, laporan menyertakan pesan bahwa backtrace tidak tersedia. - Konstanta Warna Dying: Menggunakan kembali
REDdanBOLDdari Dying untuk judul error,CYANuntuk cabang diagnostik,DARK_GRAYuntuk detail pendukung, sertaRESETuntuk mengatur ulang gaya. Konstanta ini menyediakan pemformatan visual tanpa menjadikan VMError sebagai mekanisme penghentian proses. - Kelas Error Sistem TypeScript:
VMSystemErrorpada TypeScript, yang diekspor sebagaiVMError, memperluasErrordan hanya merepresentasikan error sistemLVM500, bukan seluruh varian error Rust. Kelas ini menyimpandetail,hintDetails, danipbernilai0; metodeprint(explain, hint)menulis laporan terformat melaluiconsole.errordan menangkap stack trace JavaScript jika didukung.