2010-01-15 11 views
12

vurulduktan . Bunun yerine, istisnamın kullanıcı kodu tarafından ele alınmadığı bir hatayı alıyorum. Bu kurulumu nasıl yapmam gerektiğine dair herhangi bir tavsiye/yardım sağlayabilir mi? İlgili kod aşağıda: istisna atar (benim test için) sınıfı var customException özniteliğiÖzel İstisna Filtre değil ben yazdım özel durum yakalamak için kullanıyorum özel bir istisna filtresi var ama benim istisna nedense, hiç filtreye alamayacak asp.net MVC

// some class (where exception is being thrown) 
public class SomeClass 
{ 
    public static void SomeStaticMethod() 
    { 
     throw new MyCustomException("Test"); 
    } 
} 

ile kontrolör (Ben de denetleyicisi üzerinde doğrudan atma denedim var

// controller  
[CustomExceptionFilter] 
    public class SomeController : Controller 
    {  
     public SomeController() 
     { 

     } 
     public ActionResult Index() 
     { 
      SomeClass.SomeStaticMethod(); 
      return View(); 
     } 
    } 

). kod çalıştırıldığında özel durum süzgeci var

// Custom exception filter (want this to catch all unhandled exceptions) 
public class CustomExceptionFilter : FilterAttribute, IExceptionFilter 
{ 
    public void OnException(ExceptionContext filterContext) 
    { 
     if (filterContext.Exception.GetType() == typeof(MyCustomException)) 
     { 
      // do stuff 
     } 
    } 
} 

... o ulaşılmasıyla asla ve istisnası atılır. Bunun yerine yukarıda belirtilen hatayı alıyorum. Okuduğum her şey burada eksik

.... bu Bunu ayarlamak için uygun yolu olduğunu gösterir, ama benim özel filtresinde kesme noktaları koyduğumuzda, vurulduktan çıkmamış mı? Eğer hata ele sonra TIA

cevap

7

, bunu nasıl kullanıldığına bağlı olarak biliyorum filtre bağlamı izin vermelisin. Bunun gibi:

filterContext.ExceptionHandled = true; 

Bu, '// do şeyler' bölümünde olmalıdır.

Ben kodunuzu kopyaladıktan ve filtre ince denilen oluyor. Yaptığım tek fark, exceptionHandled kodunu ekledim ve bu satırdaki ayrılığımı ekledim.

+0

Umarım hala 4 gün eskimesine rağmen bu izliyorsunuz. Ben sadece bu geri var ve benim blok içinde benim kod satırını ekledi .... OnException yönteminin asla çağrılmadığı gibi asla ulaşılmaz. Bu filtrede istisnaları işlemek için uygulamayı söylemek için bir yere (belki web.config içinde) veya bir şey ayarlamanız gereken bir bayrak var mı? . Satır istisna kullanıcı kodu herhangi bayrakları ayarlamak veya web.config bir şey eklemek gerek yoktu – Kyle

+1

tarafından işlenmeyen belirten "; ı atmak yeni MyCustomException ("Test ')' m hala hata alıyorum". . Ben hata ayıklama modunda adım zaman sadece çalıştı. İlk istisnası atılır ve orada kırar Sonra oynamak basın ve OnException benim kesme noktası geçer hata ayıklama modunda arasında adım adım denediniz –

+0

Ben her şeyi varsayalım.? aynı ad alanında ve yalnızca bir CustomExceptionFilter ve CustomException var. –