标签: onexception

ErrorAttribute vs OnException vs Application_Error

我想处理应用程序范围错误并在asp.net mvc中显示ErrorView页面.有3种方法可以做到(或者我知道).

1) ErrorAttribute in BaseController:Controller class.
     Can be used on individual Action/Controller/BaseController.
2) Override OnException() in the BaseController:Controller class.
     Will work on Controllers derived from BaseController
3) Application_Error in Global_aspx.
Run Code Online (Sandbox Code Playgroud)

什么是最佳做法.这些方法中的哪一个应该用于应用程序范围的错误处理,或者我们应该使用多个还是仅使用一个.

如果我们在BaseController上处理ErrorAttribute或/和OnException()的错误,我们仍然应该在Application_Error()中处理它.

我们什么时候应该使用Application_Error()?

asp.net-mvc application-error onexception asp.net-mvc-2

16
推荐指数
1
解决办法
7880
查看次数

ASP.NET MVC Controller.OnException未被调用

我有一个基本控制器类,我将覆盖Controller.OnException处理程序方法,以便为将继承此类的某些类型的控制器提供一般错误处理(这些控制器将返回JSON结果).当控制器引发异常时,永远不会调用OnException方法.有谁看到我做错了什么,还是有更好的方法来处理这种情况?

使用MVC 1.0

基类:

public class APIController : Controller
    {

        protected override void OnException(ExceptionContext filterContext)
        {
           //This is never called
            filterContext.Result =
                new JsonResult(); 
            base.OnException(filterContext);
        }


    }
Run Code Online (Sandbox Code Playgroud)

继承类:

public class MyController : APIController
    {
public AjaxResult ForcedException()
        {
            throw new SystemException();
        }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc controller onexception

9
推荐指数
2
解决办法
9951
查看次数

确定控制器的OnException中的结果类型

我正在开发一个MVC.NET 2.0项目,我试图在控制器的OnException方法中放入一些特殊的错误处理逻辑.基本上我希望能够确定引发未处理异常的控制器方法的结果类型,以便我可以以某种格式返回错误数据,具体取决于类型(JsonResult的json和ActionResult的html).有人能指出我确定这种类型的方法吗?我非常感谢任何帮助.

提前致谢

asp.net-mvc controller onexception

8
推荐指数
1
解决办法
1372
查看次数

在内部OnException(ExceptionContext filterContext)中,有什么方法可以恢复传递给POST操作的模型?

情况是这样的:

我无法找到一种方法来获取viewModel传递给POST操作方法的方法.

[HttpPost]
public ActionResult Edit(SomeCoolModel viewModel)
{
    // Some Exception happens here during the action execution...
}
Run Code Online (Sandbox Code Playgroud)

OnException控制器的overridable内:

protected override void OnException(ExceptionContext filterContext)
{
    ...

    filterContext.Result = new ViewResult
    {
        ViewName = filterContext.RouteData.Values["action"].ToString(),
        TempData = filterContext.Controller.TempData,
        ViewData = filterContext.Controller.ViewData
    };
}
Run Code Online (Sandbox Code Playgroud)

调试代码时filterContext.Controller.ViewData,null自代码执行时发生异常并且未返回任何视图.

无论如何,我看到它filterContext.Controller.ViewData.ModelState已经填满并具有我需要的所有值,但我没有完整的ViewData => viewModel对象可用.:(

我想回到同一个View与发布data/ViewModel给用户在一个中心点.希望你得到我的漂移.

为实现目标,还有其他方法可以遵循吗?

asp.net-mvc model exception onexception action-filter

6
推荐指数
1
解决办法
1360
查看次数

Apache Camel onException

我想从路线中捕捉所有异常.

我添加了这个OnExeption:

onException(Exception.class).process(new MyFunctionFailureHandler()).stop();
Run Code Online (Sandbox Code Playgroud)

然后,我创建了类MyFunctionFailureHandler.

public class MyFunctionFailureHandler  implements Processor {

@Override
public void process(Exchange exchange) throws Exception {
    Throwable caused;

    caused = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);

    exchange.getContext().createProducerTemplate().send("mock:myerror", exchange);
   }

}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用,我不知道为什么.

如果有异常,程序必须停止.

我怎么知道为什么这段代码不起作用!!

谢谢.

java apache esb onexception

6
推荐指数
2
解决办法
2万
查看次数

在尝试除块之前,在Delphi Application.OnException中捕获异常

我想记录delphi应用程序中引发的每个异常.为此,我在项目源代码中用我自己的一个覆盖了Application.OnException事件.

program Project;

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Logger in 'Logger.pas',
  JCLDebugHandler in 'JCLDebugHandler.pas';

{$R *.res}

begin
   Application.Initialize;
   Application.OnException := TApplicationException.AppException;
   Application.MainFormOnTaskbar := True;
   Application.CreateForm(TForm1, Form1);
   Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)

这很好用,但我没有抓住这个解决方案,在try-except块中捕获了异常.

当在except块中捕获异常时,它不会触发Application.OnException事件.

有没有办法首先在Application.OnException事件而不是except块中捕获它?

delphi try-catch onexception

0
推荐指数
1
解决办法
1373
查看次数