Aracılığıyla paylaş


Derleyici Uyarısı (düzey 1) C4532

'continue' : __finally/finally bloğundan atlamanın sonlandırma işleme sırasında tanımsız davranışı var

Açıklamalar

Derleyici aşağıdaki anahtar sözcüklerden biriyle karşılaştı:

anormal sonlandırma sırasında bir __finally veya finally bloğundan atlamaya neden olur.

Bir özel durum oluşursa ve sonlandırma işleyicileri (__finallyveya son bloklar) yürütülürken yığın çözülürken ve blok bitmeden önce __finally kodunuz bir __finally bloktan atlarsa, davranış tanımlanmamış olur. Denetim, geri sarma koduna dönemeyebilir, bu nedenle özel durum düzgün işlenmeyebilir.

Bir __finally bloktan atlamanız gerekiyorsa, önce anormal sonlandırma olup olmadığını denetleyin.

/sdl (Ek Güvenlik Denetimlerini Etkinleştir) derleyici seçeneği bu uyarıyı bir hataya yükseltir.

Örnek

Aşağıdaki örnek C4532 oluşturur; uyarıları çözmek için atlama deyimlerini silin veya açıklama satırı ekleyin.

// C4532.cpp
// compile with: /W1
// C4532 expected
int main() {
   int i;
   for (i = 0; i < 10; i++) {
      __try {
      } __finally {
         // Delete the following line to resolve.
         continue;
      }

      __try {
      } __finally {
         // Delete the following line to resolve.
         break;
      }
   }
}