错误处理:
1. 语法错误
2. 运行时的错误
3. 逻辑错误
错误报告:
错误E_ERROR
警告E_WARNING
注意E_NOTICE
开发阶段:开发时输出所有的错误报告,有利于我们进行调试
运行阶段:不要让程序输出任何一种错误报告
将错误报告写入日志中
一. 指定错误报告error_reporting=E_ALL(在php.inn)
二. 关闭错误输出display_errors=off(在php.ini中)
三. 开启错误日志的功能log_errors=on(在php.ini中)
1. 默认如果不指定错误日志位置,则默认写入web服务器的日志中
2. 为error_log选项指定一个文件名,这个文件名就是错误日志
3. 写入到操作系统日志中error_log=syslog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<?php
//注意和警告都不会终止程序的运行,但是错误会终止程序的运行
/*
错误E_ERROR
警告E_WARNING
注意E_NOTICE
*/
//所有的错误都输出除了注意
error_reporting
(E_ALL & ~E_NOTICE);
//设置配置文件的值(临时)
//ini_set("upload_max_filesize", 2000000000);
//得到配置文件的值
//ini_get("upload_max_filesize");
//关闭错误报告的显示,一般在运行阶段使用
ini_set
(
"display_errors"
,
"off"
);
//将错误报告写入日志中
ini_set
(
"log_errors"
,
"on"
);
//日志的目录
ini_set
(
"error_log"
,
"D:/error.log"
);
gettype
(
$var
);
//注意
gettype
();
//警告
//getype(); //错误,程序终止
echo
"############<br>"
;
?>
|
异常处理:意外,是在程序运行过程中发生的意料之外的事,使用异常改变脚本正常流程
PHP5中的一个新的重要特性
try{
}catch(异常对象){
}
1. 如果try中代码没有问题,则将try中代码执行完成后就到catch后执行
2. 如果try中代码有异常发生,则抛出一个异常对象(使用throw),抛出给了catch中的参数,则在try中出现异常代码后的内容就不会执行,直接跳转到catch中去执行,catch中执行完成,再继续向下执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
try
{
echo
"11111111<br>"
;
$file
=@
fopen
(
"./hello.txt"
,
"r"
);
if
(!
$file
){
throw
new
Exception(
"文件打开失败"
);
}
echo
"2222222222<br>"
;
}
catch
(Exception
$e
){
echo
"3333333<br>"
;
echo
$e
->getMessage().
"<br>"
;
touch(
"hello.txt"
);
$file
=@
fopen
(
"./hello.txt"
,
"r"
);
}
echo
"4444444<br>"
;
?>
|