Skip to content

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 ip yang tersimpan dan tipe error dalam laporan untuk varian yang memiliki konteks instruksi. ExcessiveNopPadding, InvalidMaxTicksConfig, dan TickLimitExceeded tidak menyimpan ip, sehingga pemformat menampilkan 0 sebagai penanda pengganti. Laporan SystemError pada Rust tidak menyertakan metadata instruction pointer dan tipe error.
  • Kode Error Diagnostik: Memetakan varian runtime dan validasi ke LVM001–LVM017 serta SystemError ke LVM500 melalui error_code(), sehingga tersedia pengenal yang konsisten untuk penelusuran masalah.
  • Petunjuk & Penjelasan yang Dapat Dikonfigurasi: Menggunakan pengaturan VMErrorContainer (hint, explain, diagnostic_links, dan backtrace) untuk mengontrol keluaran diagnostik. Petunjuk dan tautan dokumentasi diaktifkan secara bawaan, sementara penjelasan dan backtrace dinonaktifkan. Ketika petunjuk diaktifkan, explain memilih penjelasan panjang sebagai pengganti petunjuk singkat.
  • Tautan Dokumentasi Error: Menggunakan diagnostic_link() untuk menghasilkan URL dokumentasi bagi setiap kode error. Pengaturan diagnostic_links mengontrol apakah pemformat menyertakan URL tersebut, secara terpisah dari petunjuk.
  • Backtrace Internal Opsional: Ketika backtrace diaktifkan, 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 RED dan BOLD dari Dying untuk judul error, CYAN untuk cabang diagnostik, DARK_GRAY untuk detail pendukung, serta RESET untuk mengatur ulang gaya. Konstanta ini menyediakan pemformatan visual tanpa menjadikan VMError sebagai mekanisme penghentian proses.
  • Kelas Error Sistem TypeScript: VMSystemError pada TypeScript, yang diekspor sebagai VMError, memperluas Error dan hanya merepresentasikan error sistem LVM500, bukan seluruh varian error Rust. Kelas ini menyimpan detail, hintDetails, dan ip bernilai 0; metode print(explain, hint) menulis laporan terformat melalui console.error dan menangkap stack trace JavaScript jika didukung.

INFO

Kamu bisa menemukan referensi diagnostik pada halaman LVM001 hingga LVM017 dan LVM500.