.net mvc中封裝了一些特性可以實現(xiàn)AOP,如常用的HandleErrorAttribute,ActionFilterAttribute,AuthorizeAttribute。自定義一個特性,繼承這些特性,并重寫里面的方法就可以AOP切入到Action中的關注點。本篇文章主要對筆者在使用HandleErrorAttribute的過程中遇到的一個問題進行分享。
我們在action中會用try..catch..進行異常處理,筆者在catch中返回一個json(標示失敗)。我發(fā)現(xiàn)所有的action在catch中返回值都一樣,所以就想到使用HandleErrorAttribute進行異常捕獲,然后返回自定義的json。但是發(fā)現(xiàn)我在OnException方法中已經設置了filterContext.Result為我想要返回的值了,但是運行時還是報錯,并沒有返回我處理后返回的json。如果你也遇到這樣的問題,添上一句話就OK了,那就是:filterContext.ExceptionHandled = true;
這是為什么呢?可能你看到這里已經恍然大悟了,那就是你要把ExceptionHandled這個表示設置為true,意思也就是我已經處理過了這個異常。這時候,瀏覽器一看,哦~已經處理了異常了,就輸出你要的json了,如果你不設置成true,瀏覽器一看,還是沒有Handed的異常,就給你報出來了。
新聞熱點
疑難解答