GVKun编程网logo

php – PDO异常未被捕获(php捕获错误)

14

本文将为您提供关于php–PDO异常未被捕获的详细介绍,我们还将为您解释php捕获错误的相关知识,同时,我们还将为您提供关于网站是php的框架symfony2开发的,用php7.2.14的老是报pdo

本文将为您提供关于php – PDO异常未被捕获的详细介绍,我们还将为您解释php捕获错误的相关知识,同时,我们还将为您提供关于 网站是php 的框架 symfony2开发的 ,用php7.2.14 的老是报pdo异常 非常奇怪、AngularJS:由于服务和模块依赖性而未被捕获的对象、c – 为什么win32计时器回调中抛出的未处理异常未被调试器视为未处理的异常?、c# – F10键未被捕获的实用信息。

本文目录一览:

php – PDO异常未被捕获(php捕获错误)

php – PDO异常未被捕获(php捕获错误)

我是新手使用PDO,我发现由于查询语句中的错误导致的异常没有被捕获并正确显示.发生这种情况时的页面输出通常如下所示:

Fatal error: Uncaught exception 'PDOException' with message 'sqlSTATE[42000]: ...

我使用以下函数进行PDO查询:

/**************************************************************************************************************
* Function: makeQuery                                                                                         *
* Desc: Makes a PDO query.                                                                                    *
* Pre conditions: The statement/query and an array of named parameters (may be empty) must be passed.         *
* Post conditions: The PDO query is executed. Exceptions are caught,displayed,and page execution stopped.   *
**************************************************************************************************************/
function makeQuery($stmt,$array,$errMsg = '')
{
    try 
    {
        $stmt->execute($array);
    }
    catch (PDOException $e) 
    {
        print $errMsg != ''?$errMsg:"Error!: " . $e->getMessage() . "<br/>";
        die();
    }
}

知道为什么没有被捕获的例外吗?

编辑:这是我创建PDO对象的方式:

function createPDO()
{
    // MysqL connection details
    $dbhost = '';
    $dbuser = '';
    $dbpass = '';
    $dbname = '';

    try
    {
        $db = new PDO("MysqL:$dbhost=localhost;dbname=$dbname;charset=utf8",$dbuser,$dbpass,array(PDO::ATTR_EMULATE_PREPARES => false,PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    }
    catch (PDOException $e)
    {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }

    return $db;
}

解决方法

您确定每个查询都在运行该函数吗?可以通过您的代码查看100%确定.

另一个选择是定义一个全局异常处理程序,然后只询问抛出的异常行和&文件来自:

http://php.net/manual/en/function.set-exception-handler.php

function exception_handler($exception)
{
  echo "Uncaught exception: " . $exception->getMessage() . PHP_EOL;
  echo "In file: " . $exception->getFile() . PHP_EOL;
  echo "On line: " . $exception->getLine() . PHP_EOL;
}

set_exception_handler('exception_handler');

编辑:
经过OP的一些对话后,我现在确定PDOStatement :: prepare的调用是抛出异常的地方,因此我建议另一个包装函数到库中:

function prepareStmt(PDO $oPdo,$sstmt,array $aDriverOptions=array())
{
  try
  {
    return $oPdo->prepare($sstmt,$aDriverOptions);
  }
  catch(PDOException $e)
  {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
  }
}

 网站是php 的框架 symfony2开发的 ,用php7.2.14 的老是报pdo异常 非常奇怪

网站是php 的框架 symfony2开发的 ,用php7.2.14 的老是报pdo异常 非常奇怪

 网站是php 的框架 symfony2开发的 ,用php7.2.14 的老是报pdo异常 非常奇怪。南京大学考研真题 

AngularJS:由于服务和模块依赖性而未被捕获的对象

AngularJS:由于服务和模块依赖性而未被捕获的对象

我有一个’maps-services’模块和一个’MapService’服务,如下所示:

angular.module('maps-services',[])
.service('MapService',[$log,function($log) {
    this.initMap = function() {
    }
    this.updateMap = function() {   
    }
}]);

I also have a 'maps' module depending on 'maps-services' as below:
angular.module('maps',[
   'maps-services'
]);

当我在另一个模块中依赖’maps’时,我收到一条未被捕获的对象错误消息:

“[$injector:nomod]模块’ngLocale’不可用!您拼错了模块名称或忘记加载它.如果注册模块,请确保将依赖项指定为第二个参数.
http://errors.angularjs.org/1.3.0-beta.11/ $喷油器/ NOMOD?P0 = ngLocale”

我不明白发生了什么以及如何调试模块加载以更好地了解问题所在.

请你帮助我好吗 ?

问候.

解决方法

80年代编译器的风格

此异常消息让我想起80年代编译器抛出的错误消息.

基本上当Angular抛出时:

Module ‘ngLocale’ is not available!

这意味着:

One of your modules wasn’t loaded (but not ngLocale).

有关详细信息,请参阅this和this.

现在为什么你的模块没有加载,或者它是什么模块,你可以解决.在我的情况下,有这个

angular.module( 'treeDemoApp' )

而不是这个

angular.module( 'treeDemoApp',[] )

足以让Angular抛出这个消息.但你的代码清楚地有[].

Chrome Bug?

有一些建议(1,2),这是由于chrome中的错误.

c – 为什么win32计时器回调中抛出的未处理异常未被调试器视为未处理的异常?

c – 为什么win32计时器回调中抛出的未处理异常未被调试器视为未处理的异常?

我一直在追踪工作中一个非常阴险的错误.似乎导致我一直在跟踪的非常奇怪的行为的事件似乎是在处理计时器回调时抛出的异常.异常不是由我的任何代码处理的,因此我希望调试器会收到未处理异常的通知,并提醒我一个好的令人讨厌的弹出窗口.不,相反,“第一次机会”异常消息会追溯到调试器,并且所有内容都会静默移动.

我写了以下程序来演示这个问题:

#include "stdafx.h"
#include <Windows.h>

class FooExcept
{
};

VOID CALLBACK Timer(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime)
{
    printf("Here\n");
    throw FooExcept();
    printf("Also Here\n");
}


int _tmain(int argc,_TCHAR* argv[])
{
    SetTimer(0,1000,Timer);

    int bRet;
    HWND hWnd;
    MSG msg;
    // Standard Win32 message pump
    while( (bRet = GetMessage( &msg,NULL,0 )) != 0)
    { 
        if (bRet == -1)
        {
            // handle the error and possibly exit
        }
        else
        {
            TranslateMessage(&msg); 
            dispatchMessage(&msg); 
        }
    }

    return 0;
}

此程序到Visual Studio输出窗口的输出是重复的:

First-chance exception at 0x76dbb9bc in TimerTest.exe: Microsoft C++ exception: FooExcept at memory location 0x0034f743..

当然,我的项目更加复杂,并且正在向调试器打印出大量的TRACE信息.第一次机会异常很容易在输出中丢失.

然而

那不是我关心的问题.这显然是一个例外,我没有处理. Windows是否偷偷地决定为我处理这个问题?为什么?如果没有,为什么不给我一个明确的弹出窗口警告我未处理的异常?这样的弹出窗口可以节省我几天的调试时间.

XP / VS 2008和Win7 / VS 2010之间的这种行为似乎是一致的.

解决方法

在Windows 7 SP1中,这已在某种程度上得到修复(见下文).

在文章http://support.microsoft.com/kb/976038中,您将找到一个错误修正的提及,并解释如何使用它来禁用此行为.你必须要么:

>在注册表中设置流程选项或
>调用kernel32.dll导出的函数SetProcessusermodeExceptionPolicy

我在Updates in Win7 and WS08R2 SP1.xls中验证过这个错误修复确实包含在Windows 7 Service Pack 1中,因此您所要做的就是启用它(假设您已经安装了Windows 7 SP1).

至于解释为什么这样做,我们可以猜测一些不明智的尝试,以防止遗留应用程序以向后兼容性的名义崩溃.

c# – F10键未被捕获

c# – F10键未被捕获

我有一个 Windows.Form,并覆盖ProcessCmdKey.但是,这适用于除F10之外的所有F键.我正在尝试搜索当我在表单上按F10时未调用ProcessCmdKey的原因.

有人可以告诉我如何找到原因吗?

最诚挚的问候,托马斯

解决方法

Windows以不同方式对待F10.在“备注”部分 here on MSDN中给出了解释

今天关于php – PDO异常未被捕获php捕获错误的介绍到此结束,谢谢您的阅读,有关 网站是php 的框架 symfony2开发的 ,用php7.2.14 的老是报pdo异常 非常奇怪、AngularJS:由于服务和模块依赖性而未被捕获的对象、c – 为什么win32计时器回调中抛出的未处理异常未被调试器视为未处理的异常?、c# – F10键未被捕获等更多相关知识的信息可以在本站进行查询。

本文标签: