Günün ipucu: try-catch bloğu ve Response.End()

try-catch bloğunda, Response.End() metodunu kullanırken dikkat etmek gerekir. :)

Günün ipucu:

try-catch bloğunda, Response.End() metodunu kullanırken dikkat edin.

İsterseniz kendiniz de deneyebilirsiniz:

try
{
  //... bişiyler
  //... bişiyler
  Response.End();
}
catch(Exception ex)
{
  // hata kontrolü
}

Bu kodu çalıştırdığınızda Response.End() ten sonra bir istisna (ThreadAbortException)  fırlatıldığını göreceksiniz.

Bu şekilde kullanacaksanız size 3 çözüm önerim var:

1) Bunu kullanmayın

2) Bir bool değişkeni kullanın.

bool hata = false;
try
{
  //... bişiyler
//... bişiyler
Response.End();
} catch(Exception ex) { hata = true; } if(hata) { // hata kontrolü }

3) Daha güzel bir çözüm:

try
{
  //... bişiyler
//... bişiyler
Response.End();
} catch(ThreadAbortException ex) { // birşey yazmaya gerek yok :) } catch(Exception ex) { hata = true; }

2 tane catch bloğu kullanırız.

catch(ThreadAbortException ex)  ile Response.End() den fırlatılan istisnayı yakalarız olur biter.

Dikkat edilmesi gereken husus, catch bloklarının sırası. Önce ThreadAbortException istisnasını sonra da diğer istisnaları yazmalıyız.

Herkese kolay gelsin.