12
我有一個自定義的異常過濾器,我用來捕獲我寫的自定義異常,但由於某些原因,當我拋出我的異常,它沒有得到過濾器。相反,我只是得到一個錯誤,我的異常不是由用戶代碼處理的。任何人都可以提供一些建議/協助,我應該如何設置?相關代碼如下:自定義異常過濾器沒有在asp.net中被擊中MVC
// controller
[CustomExceptionFilter]
public class SomeController : Controller
{
public SomeController()
{
}
public ActionResult Index()
{
SomeClass.SomeStaticMethod();
return View();
}
}
這與customexception屬性
// some class (where exception is being thrown)
public class SomeClass
{
public static void SomeStaticMethod()
{
throw new MyCustomException("Test");
}
}
這就是類(我的測試)拋出異常控制器(我也試過直接在控制器上把它扔)。
// 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
}
}
}
這就是自定義異常過濾器......當代碼執行和引發異常時,它永遠不會到達。相反,我得到上面提到的錯誤。我讀過的所有內容都表明這是設置這種方法的正確方法,但是當我在自定義過濾器中放置斷點時,它絕不會被擊中......
我在這裏錯過了什麼?
TIA
希望你仍然會繼續這個,即使它已經4天了。我剛回到這裏,並且在我的if塊中添加了你的代碼行......因爲我的OnException方法永遠不會被調用,所以它永遠不會被觸及。是否有一個標誌需要設置(可能在web.config中)或者某個地方告訴應用程序處理此過濾器中的異常?我仍然得到「拋出新的MyCustomException(」測試「);」線表明異常是由用戶代碼未處理的錯誤。 – Kyle 2010-01-20 16:24:20
我不需要設置任何標誌,或添加任何東西到web.config。它只是工作,當我在調試模式下一步一步:首先拋出異常,然後打破它,然後我按下播放,它在OnException中進入我的斷點,你是否嘗試在調試模式下單步調試? – 2010-01-20 16:56:12
我認爲所有的東西在同一個命名空間中,你只有一個CustomExceptionFilter和CustomException。 – 2010-01-20 17:05:17