<?php
function DBconn() {
if(!$conn = mysqli_connect("localhost","root","root","root")) {
throw new Exception("Database connect error!");
}
}try {
DBconn();
} catch(Exception $e) {
echo $e->getMessage();
}
?>按道理来讲,输出结果应该是Database connect error!
可是我一运行,输出结果如下:
Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): 'root'@'localhost' 荤侩磊绰 立辟捞 芭何 登菌嚼聪促. (using password: 抗) in E:\php\test\try.php on line 3
Database connect error!
暂且不管乱码是什么意思,反正是无法连接数据库的意思,但是跟我要的结果不一样,按理来说mysqli_connect错误不该出现,我的PHP版本是5.2.8 请问哪里有错误,该怎么正确使用throw,try,catch函数。
function DBconn() {
if(!$conn = mysqli_connect("localhost","root","root","root")) {
throw new Exception("Database connect error!");
}
}try {
DBconn();
} catch(Exception $e) {
echo $e->getMessage();
}
?>按道理来讲,输出结果应该是Database connect error!
可是我一运行,输出结果如下:
Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): 'root'@'localhost' 荤侩磊绰 立辟捞 芭何 登菌嚼聪促. (using password: 抗) in E:\php\test\try.php on line 3
Database connect error!
暂且不管乱码是什么意思,反正是无法连接数据库的意思,但是跟我要的结果不一样,按理来说mysqli_connect错误不该出现,我的PHP版本是5.2.8 请问哪里有错误,该怎么正确使用throw,try,catch函数。
[code=PHP]
<?php
$conn = @mysqli_connect("localhost","root","root","root") die("Database connect error!"); //当$conn出错的时候就会提示Database connect error!
$conn = mysql_connect
孤陋寡闻了吧,mysqli是php5新添的扩展!
你如果要error_reporting的信息不显示, 在前面加 error_report(0) 或者用
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
把错误转换成exception,这样就能catch到了
例子一:
<?phpfunction exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");try {
$conn = mysqli_connect("localhost","root","root","root");
} catch(Exception $e) {
echo 'Database connect error:'.$e->getMessage();
} ?>例子二: (这个例子里捕捉了php自己报的ErrorException,忽略掉后,换成自己定义的MyException)<?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");class MyException extends Exception{
public function show(){
echo 'My exception:';
}
}function DBconn() {
try{
$conn = mysqli_connect("localhost","root","root","root");
}catch(ErrorException $e){
throw new MyException("Database connect error!");
}
} try{
DBconn();
} catch(Exception $e) {
$e->show();
echo $e->getMessage();
} ?>
红色部分应该是端口吧,你写个root是啥意思?
你把if的{}里面换成下面看看//throw new Exception("Database connect error!");
die("Can't connect to localhost. <br />\n " .
"ErrorCode: " . mysqli_connect_errno() . "<br />\n" .
"Error: " . mysqli_connect_error() );