DkmILBeginTry Sınıf

Tanım

Bir try bloğuna başlar. Try bloğunun yürütülmesi içinde bir hata oluşursa denetim, Il 'nin hatadan kurtarılmasına izin vermek için uygun bir catch bloğuna atlayacaktır. Yerel Il 'de özel durum işleme aşağıdaki gibi çalışmaktadır: yerel Il 'de bir özel durum, kayıt okuma veya bellek okuma gibi bazı bir işlemin başarısız olduğu anlamına gelir. Her özel durum, sorunu açıklayan 32 bitlik özel durum kodu tarafından tanımlanır. Özel durum kodu değerleri DkmILFailureReason numaralandırmaya göre tanımlanır ve ayrıca, bir iç işleve özgü özel durum koşullarını işlemek için ek kullanıcı tanımlı değerler de kullanılabilir (örneğin, 0 günlüğünü alma girişimi).

Varsayılan olarak, bir özel durum oluştuğunda, Il işlemi hemen durdurulur, DkmCompiledInspectionQuery:: ExecuteQuery () başarısız olur ve özel durum kodu out parametresi olarak döndürülüyor. Il ile ilgili özel durumu işlemek için Il, korunan bir özel durum işleme durumu girmek için DkmILBeginTry yönergesini yürütmelidir. Il işleme, bir DkmILEndTryBlock yönergesi yürütülene kadar bu durumda kalır.

Bir DkmILBeginTryBlock yönergesi, blok içinde bir özel durum oluşursa ne yapılacağını belirtir. Bloğun özel durum işleme mantığı, bir Dkmilcatch blok nesneleri koleksiyonu tarafından tanımlanır. Her bir catch bloğu, catch bloğunun yakalayacağı özel durum kodunu ve catch bloğunun bulunduğu yönerge akışına olan sapmayı tanımlar.

Bu nedenle, bir özel durum oluştuğunda şunları yapacağız:

  1. bir try bloğu içinde olup olmadığını kontrol edin: Hayır: Il işlemini durdurma ve Dkmcompiledınspectionquery:: ExecuteQuery () işleminin başarısız olmasına neden oldu. Evet: 2) özel durum kodunu yakalayan bir catch bloğunu arayarak try bloğundan ilişkili Dkmilcatch blok nesnelerinin listesini sıralı sırayla Inceleyin. (Birden fazla catch bloğu çalışırsa, ilk eşleşmeyi kullandık ve diğer eşleşmeleri yoksayacak). Bir eşleşme bulduk:-bir try bloğunda olduğunu belirten durumu temizleyin (Bu nedenle, yeni bir try bloğu ayarlanmamışsa, catch işleyicisindeki tüm özel durumlar işlenmemiş olur)-try bloğunu girdikten sonra gönderilen Il yığınından tüm değerleri kaldırın. Deneme bloğunun başlamasından önce zaten gönderilmiş olan yerel değişkenler, kaydedilen dönüş değerleri ve Il yığın değerleri korunur. (TRY bloğunun dışına itilmiş bir try bloğu içindeki yığından bir değer eklemek geçersizdir). -Özel durum kodunu yığında 32 bitlik bir değer aktarma denetimi olarak gönderin ve bir eşleşme bulamazsa Il 'ye devam edin:-özel durum işlenmemiş. Il işlemini durdurun ve DkmCompiledInspectionQuery:: ExecuteQuery () işleminin başarısız olmasına neden olur.

İnceleme sorgusunun yürütülmesi sırasında, iş listesinin iptal edildiğini tespit ediyoruz. Bu, Il işlemesini hemen iptal edeceğiz. Il 'nin bunu işleyebilme şansı yoktur.

Genel olarak, bir inceleme başarısız olduğunda özel durum işlemeye izin verilir veya bir aritmetik hata oluşur (örn. sıfıra bölme), ancak, yalnızca geçersiz Il aracılığıyla ortaya çıkabilecek hata koşullarında (örn. boş yığından pop deneme), bu tür hataların özel durum işlemenin destekleneceğini garanti etmeyiz. İşlemeyi desteklemediğimiz bir özel durum oluşursa, Il işleme yalnızca iptal edilir.

public ref class DkmILBeginTry : Microsoft::VisualStudio::Debugger::Evaluation::IL::DkmILInstruction
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmILBeginTry : Microsoft::VisualStudio::Debugger::Evaluation::IL::DkmILInstruction
[Windows::Foundation::Metadata::WebHostHidden]
class DkmILBeginTry : Microsoft::VisualStudio::Debugger::Evaluation::IL::DkmILInstruction
[System.Runtime.InteropServices.Guid("16f727a6-1a24-9c23-11b3-1a4cfe666cc6")]
public class DkmILBeginTry : Microsoft.VisualStudio.Debugger.Evaluation.IL.DkmILInstruction
[<System.Runtime.InteropServices.Guid("16f727a6-1a24-9c23-11b3-1a4cfe666cc6")>]
type DkmILBeginTry = class
    inherit DkmILInstruction
Public Class DkmILBeginTry
Inherits DkmILInstruction
Devralma
DkmILBeginTry
Öznitelikler

Özellikler

CatchBlocks

Try bloğunda gerçekleşen özel durumları işlemek için sıralı catch blokları listesi.

TagValue

DkmILInstruction soyut bir temel sınıftır. Bu Enum, bu nesnenin bir örneği olan türetilmiş sınıfı gösterir.

(Devralındığı yer: DkmILInstruction)
UniqueId

DkmILInstruction nesnesini benzersiz bir şekilde tanımlar. DkmIL yönergelerinin eşleşen değerleriyle hızlı bir şekilde eşleşmesini sağlamak için bir karma tablo anahtarı olarak kullanılır.

(Devralındığı yer: DkmILInstruction)

Yöntemler

Create(ReadOnlyCollection<DkmILCatchBlock>)

Yeni bir DkmILBeginTry nesne örneği oluşturun.

Şunlara uygulanır