标签: error-handling

PHP:异常vs错误?

也许我在PHP手册的某个地方遗漏了它,但是错误和异常之间究竟有什么区别?我能看到的唯一区别是错误和异常的处理方式不同.但是什么导致异常以及导致错误的原因是什么?

php error-handling exception-handling exception

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

ASP.NET MVC中的日志记录错误

我目前正在ASP.NET MVC应用程序中使用log4net来记录异常.我这样做的方法是让我的所有控制器继承自BaseController类.在BaseController的OnActionExecuting事件中,我记录可能发生的任何异常:

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
    // Log any exceptions
    ILog log = LogManager.GetLogger(filterContext.Controller.GetType());

    if (filterContext.Exception != null)
    {
        log.Error("Unhandled exception: " + filterContext.Exception.Message +
            ". Stack trace: " + filterContext.Exception.StackTrace, 
            filterContext.Exception);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果在控制器操作期间发生未处理的异常,则此方法很有用.

至于404错误,我在web.config中设置了自定义错误,如下所示:

<customErrors mode="On">
    <error statusCode="404" redirect="~/page-not-found"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)

在处理"页面未找到"网址的控制器操作中,我记录了所请求的原始网址:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult PageNotFound()
{
    log.Warn("404 page not found - " + Utils.SafeString(Request.QueryString["aspxerrorpath"]));

    return View();
}
Run Code Online (Sandbox Code Playgroud)

这也有效.

我遇到的问题是如何记录.aspx页面本身的错误.假设我在其中一个页面或某些内联代码上出现编译错误,这将导致异常:

<% ThisIsNotAValidFunction(); %>
<% throw new Exception("help!"); %>
Run Code Online (Sandbox Code Playgroud)

似乎HandleError属性正确地将其重新路由到Shared文件夹中的Error.aspx页面,但它肯定没有被我的BaseController的OnActionExecuted方法捕获.我想我可以将日志代码放在Error.aspx页面本身,但我不确定如何在该级别检索错误信息.

error-handling asp.net-mvc

107
推荐指数
3
解决办法
8万
查看次数

仅通过htaccess在php中启用错误显示

我正在网上测试一个网站.

现在,错误没有显示(但我知道它们存在).

我只能访问该.htaccess文件.

如何使用我的.htaccess文件显示所有错误

编辑

我将这些行添加到我的.htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
Run Code Online (Sandbox Code Playgroud)

和页面现在显示

内部服务器错误

php error-handling .htaccess

105
推荐指数
3
解决办法
36万
查看次数

ASP.NET MVC自定义错误处理Application_Error Global.asax?

我有一些基本代码来确定我的MVC应用程序中的错误.目前在我的项目,我有一个名为控制器Error与操作方法HTTPError404(),HTTPError500()General().它们都接受一个字符串参数error.使用或修改下面的代码.将数据传递给Error控制器进行处理的最佳/正确方法是什么?我想尽可能提供强大的解决方案.

protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();
    Response.Clear();

    HttpException httpException = exception as HttpException;
    if (httpException != null)
    {
        RouteData routeData = new RouteData();
        routeData.Values.Add("controller", "Error");
        switch (httpException.GetHttpCode())
        {
            case 404:
                // page not found
                routeData.Values.Add("action", "HttpError404");
                break;
            case 500:
                // server error
                routeData.Values.Add("action", "HttpError500");
                break;
            default:
                routeData.Values.Add("action", "General");
                break;
        }
        routeData.Values.Add("error", exception);
        // clear error on server
        Server.ClearError();

        // at this point how to …
Run Code Online (Sandbox Code Playgroud)

c# asp.net error-handling asp.net-mvc user-experience

104
推荐指数
7
解决办法
16万
查看次数

处理JavaScript中的特定错误(想想异常)

你将如何实现不同类型的错误,这样你就能捕捉到特定错误并让其他人冒出来......?

实现此目的的一种方法是修改Error对象的原型:

Error.prototype.sender = "";


function throwSpecificError()
{
    var e = new Error();

    e.sender = "specific";

    throw e;
}
Run Code Online (Sandbox Code Playgroud)

捕获特定错误:

try
{
    throwSpecificError();
}

catch (e)
{
    if (e.sender !== "specific") throw e;

    // handle specific error
}
Run Code Online (Sandbox Code Playgroud)


你有没有其他选择?

javascript error-handling

98
推荐指数
4
解决办法
4万
查看次数

单值上下文中的多个值

由于Go中的错误处理,我经常最终得到多个值函数.到目前为止,我管理它的方式非常混乱,我正在寻找编写更清晰代码的最佳实践.

假设我有以下功能:

type Item struct {
   Value int
   Name string
}

func Get(value int) (Item, error) {
  // some code

  return item, nil
}
Run Code Online (Sandbox Code Playgroud)

如何item.Value优雅地分配新变量.在介绍错误处理之前,我的函数刚刚返回item,我可以简单地执行此操作:

val := Get(1).Value
Run Code Online (Sandbox Code Playgroud)

现在我这样做:

item, _ := Get(1)
val := item.Value
Run Code Online (Sandbox Code Playgroud)

有没有办法直接访问第一个返回的变量?

error-handling return-value go multiple-return-values

97
推荐指数
4
解决办法
9万
查看次数

在PHP 5.4中禁用严格标准

我目前在php 5.4上运行一个站点,在此之前我在5.3.8上运行我的站点.不幸的是,PHP 5.4联合收割机E_ALLE_STRICT,这意味着我以前的设置error_reporting现在无法正常工作.我之前的价值是E_ALL & ~E_NOTICE & ~E_STRICT我应该一次启用一个值吗?

我有太多错误,文件中包含太多代码供我修复.

php error-handling

95
推荐指数
1
解决办法
15万
查看次数

在服务器上记录客户端JavaScript错误

我运行一个ASP.NET站点,我有问题,只需手动测试就可以找到一些JavaScript错误.

是否有可能捕获客户端上的所有JavaScript错误并将其记录在服务器上,即在EventLog中(通过Webservice或类似的东西)?

javascript error-handling logging

93
推荐指数
3
解决办法
4万
查看次数

ifstream打开失败时如何获取错误消息

ifstream f;
f.open(fileName);

if ( f.fail() )
{
    // I need error message here, like "File not found" etc. -
    // the reason of the failure
}
Run Code Online (Sandbox Code Playgroud)

如何将错误消息作为字符串?

c++ error-handling std stream

92
推荐指数
4
解决办法
9万
查看次数

捕获shell管道中的错误代码

我目前有一个类似的脚本

./a | ./b | ./c
Run Code Online (Sandbox Code Playgroud)

我想修改它,以便如果a,b或c中的任何一个退出并带有错误代码我打印错误消息并停止而不是向前输出错误的输出.

最简单/最干净的方法是什么?

error-handling shell pipe

91
推荐指数
4
解决办法
3万
查看次数