我想捕获此错误:
$a[1] = 'jfksjfks';
try {
$b = $a[0];
} catch (\Exception $e) {
echo "jsdlkjflsjfkjl";
}
编辑:实际上,我在以下行中收到此错误:
$parse = $xml->children[0]->children[0]->toArray();
Answers:
您需要定义自定义错误处理程序,例如:
<?php
set_error_handler('exceptions_error_handler');
function exceptions_error_handler($severity, $message, $filename, $lineno) {
if (error_reporting() == 0) {
return;
}
if (error_reporting() & $severity) {
throw new ErrorException($message, 0, $severity, $filename, $lineno);
}
}
$a[1] = 'jfksjfks';
try {
$b = $a[0];
} catch (Exception $e) {
echo "jsdlkjflsjfkjl";
}
set_error_handler(...)
放置在function exceptions_error_handler...
tnx之后
您不能使用try / catch块,因为这是一个错误,而不是例外。
在使用偏移之前,请务必尝试:
if( isset( $a[ 0 ] ) { $b = $a[ 0 ]; }
empty()
而不是isset()
因为它的比较有所不同:php.net/manual/en/types.comparisons.php
$a[1] = 'jfksjfks';
try {
$offset = 0;
if(isset($a[$offset]))
$b = $a[$offset];
else
throw new Exception("Notice: Undefined offset: ".$offset);
} catch (Exception $e) {
echo $e->getMessage();
}
或者,在没有效率的情况下创建一个非常临时的异常:
$a[1] = 'jfksjfks';
$offset = 0;
if(isset($a[$offset]))
$b = $a[$offset];
else
echo "Notice: Undefined offset: ".$offset;
echo
中else
的条款。这不会减损您的回答,但我认为需要指出。
通常,您无法使用try-catch块捕获通知。但是您可以将通知转换为例外!使用这种方式:
function get_notice($output)
{
if (($noticeStartPoint = strpos($output, "<b>Notice</b>:")) !== false) {
$position = $noticeStartPoint;
for ($i = 0; $i < 3; $i++)
$position = strpos($output, "</b>", $position) + 1;
$noticeEndPoint = $position;
$noticeLength = $noticeEndPoint + 3 - $noticeStartPoint;
$noticeMessage = substr($output, $noticeStartPoint, $noticeLength);
throw new \Exception($noticeMessage);
} else
echo $output;
}
try {
ob_start();
// Codes here
$codeOutput = ob_get_clean();
get_notice($codeOutput);
} catch (\Exception $exception) {
// Catch (notice also)!
}
另外,您可以使用此功能来捕获警告。只需将函数名称更改为get_warning并更改"<b>Notice</b>:"
为即可"<b>Warning</b>:"
。
注意:该函数将捕获包含以下内容的无害输出:
<b>通知</ b>:
但是,为了摆脱这个问题,只需将其更改为:
<b>注意:</ b>
我确定为什么会抛出错误,但我修复了一些..
在html2pdf.class.php中
在第2132行:
//FIX:
$ctop=$corr[$y][$x][2]<=count($sw)?$corr[$y][$x][2]:count($sw);
$s = 0; for ($i=0; $i<$ctop; $i++) {$s+= array_key_exists($x+$i, $sw)? $sw[$x+$i]:0;}
同一行2138:
//FIX:
$ctop=$corr[$y][$x][2]<=count($sw)?$corr[$y][$x][2]:count($sw);
for ($i=0; $i<$ctop; $i++) {
问题数组$ sw没有$ corr [$ y] [$ x] [2]的键,所以我修复了最大计数($ sw)要修复的循环。但我解决了我的问题,您没有其他错误。
所以我希望对你有用.. !!! 击败护卫队