Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini membahas metode yang digunakan untuk melaporkan kesalahan penghentian. Ini juga membahas cara memanggil metode dari dalam cmdlet, dan membahas pengecualian yang dapat dikembalikan oleh runtime Windows PowerShell ketika metode dipanggil.
Ketika terjadi kesalahan penghentian, cmdlet harus melaporkan kesalahan dengan memanggil metode System.Management.Automation.Cmdlet.ThrowTerminatingError*. Metode ini memungkinkan cmdlet mengirim catatan kesalahan yang menjelaskan kondisi yang menyebabkan kesalahan penghentian. Untuk informasi selengkapnya tentang rekaman kesalahan, lihat Catatan Kesalahan Windows PowerShell.
Ketika metode System.Management.Automation.Cmdlet.ThrowTerminatingError* dipanggil, runtime Windows PowerShell secara permanen menghentikan eksekusi alur dan melempar System.Management.Automation.PipelineStoppedException pengecualian. Setiap upaya berikutnya untuk memanggil System.Management.Automation.Cmdlet.WriteObject, System.Management.Automation.Cmdlet.WriteError, atau beberapa API lainnya menyebabkan panggilan tersebut melempar pengecualian System.Management.Automation.PipelineStoppedException.
Pengecualian System.Management.Automation.PipelineStoppedException juga dapat terjadi jika cmdlet lain dalam alur melaporkan kesalahan yang mengakhiri, jika pengguna telah meminta untuk menghentikan alur, atau jika alur telah dihentikan sebelum penyelesaian karena alasan apa pun. Cmdlet tidak perlu menangkap pengecualian System.Management.Automation.PipelineStoppedException kecuali harus membersihkan sumber daya terbuka atau status internalnya.
Cmdlet dapat menulis sejumlah objek output atau kesalahan yang tidak mengakhiri sebelum melaporkan kesalahan yang mengakhiri. Namun, kesalahan penghentian secara permanen menghentikan alur, dan tidak ada output lebih lanjut, mengakhiri kesalahan, atau kesalahan yang tidak mengakhiri dapat dilaporkan.
Cmdlet dapat memanggil System.Management.Automation.Cmdlet.ThrowTerminatingError* hanya dari utas yang disebut System.Management.Automation.Cmdlet.BeginProcess, System.Management.Automation.Cmdlet.ProcessRecord, atau System.Management.Automation.Cmdlet.EndProcessing metode pemrosesan input. Jangan mencoba memanggil System.Management.Automation.Cmdlet.ThrowTerminatingError* atau System.Management.Automation.Cmdlet.WriteError dari utas lain. Sebaliknya, kesalahan harus dikomunikasikan kembali ke utas utama.
Dimungkinkan bagi cmdlet untuk memberikan pengecualian dalam implementasi System.Management.Automation.Cmdlet.BeginProcessing, System.Management.Automation.Cmdlet.ProcessRecord, atau System.Management.Automation.Cmdlet.EndProcessing metode. Pengecualian apa pun yang dilemparkan dari metode ini (kecuali untuk beberapa kondisi kesalahan parah yang menghentikan host Windows PowerShell) ditafsirkan sebagai kesalahan penghentian yang menghentikan alur, tetapi bukan Windows PowerShell secara keseluruhan. (Ini hanya berlaku untuk utas cmdlet utama. Pengecualian yang tidak tertangkap dalam utas yang dihasilkan oleh cmdlet, secara umum, menghentikan host Windows PowerShell.) Kami menyarankan agar Anda menggunakan System.Management.Automation.Cmdlet.ThrowTerminatingError* daripada melempar pengecualian karena catatan kesalahan memberikan informasi tambahan tentang kondisi kesalahan, yang berguna untuk pengguna akhir. Cmdlet harus mematuhi pedoman kode terkelola terhadap penangkapan dan penanganan semua pengecualian (catch (Exception e)). Konversikan hanya pengecualian jenis yang diketahui dan diharapkan menjadi rekaman kesalahan.
Lihat Juga
System.Management.Automation.Cmdlet.BeginProcessing
System.Management.Automation.Cmdlet.EndProcessing
System.Management.Automation.Cmdlet.ProcessRecord
System.Management.Automation.PipelineStoppedException
System.Management.Automation.Cmdlet.ThrowTerminatingError*
System.Management.Automation.Cmdlet.WriteError