错误和异常
写程序,肯定会遇到的一个问题,就是报错!!
排错方法
1.解读错误信息:
可以借助有道词典、金山词霸去翻译一下,当我们知道错误出在哪并且可以完整的解读报错信息时,你犯的错误会越来越少
2.输出法调试:
在你感觉有错误的地方,输出一下,调试一下,问题也许就能解决
3.断点调试发:(die、exit、注释)
在你感觉有错的地方,使用die或exit或将后面代码注释的方法,中断一下代码的执行
注:使用trigger_error()函数可替换die()或exit()不会终止脚本而是生成一个用户警告来代替,使程序更具有灵活性。
错误类型
1.语法错误:它是比较容易排除的,直接通过报错信息,找到对应行数即可解决问题
注:语法错误需要在报错行上下看一下,一般错误都在报错行上一行
2.运行时的错误
它相对来说也是比较容易解决的
3.逻辑错误
这种错误是最难排除的,
注:编写程序时可以没写一段代码运行调试一下以避免各种类型错误
错误的级别
1. E_ERROR 致命级别
致命的运行时错误(会阻止脚本的继续执行,但不影响出错前面的运行)
2. E_WARNING 警告级别
运行时警告(非致命的错误,仅警告的代码不会执行)
3. E_NOTICE 提示错误
运行时注意消息(可能是或者可能不是一个问题,不会影响程序运行)
4. E_ALL 所有的错误和提示(所有级别的错误、警告和注意)
调整错误级别
1> 找到 php.ini 文件,搜索 error_reporting = E_ALL & ~E_NOTICE
&:并且 |:或者 ~:除了
注意: 配置文件修改的时候,一定要做备份!!!!!!!!!!
修改完配置文件之后,需要重启服务器
2>在当前文件里面将错误信息关闭
error_reporting(); //在你想要关闭错误的文件当中去写(推荐使用)
display_errors = On //显示所有错误(Off 屏蔽所有错误)
注意:在配置文件中搜索 display_errors 将 On 改成 Off 即可关闭所有级别的错误
ini_get(); //获取本地配置的设置信息 ini_get("配置名");
ini_set(); //在本地进行配置信息设置 ini_set("配置名","配置值");
ini_get_all(); //获取我们所有可以从页面中设置的配置信息
global:php.ini配置文件中的设置信息
local: 在本地页面中的设置信息
3>php当中的日志
log_errors:开启或者关闭错误日志记录(On、Off)
error_log:存放错误日志的路径
上线步骤: 1. error_reporting = E_ALL 显示所有级别的错误
2. display_errors = Off 不在页面上显示所有错误
3. log_errors = On 开启错误日志记录
4. error_log = 路径 设置错误日志的存放路径
异常处理
异常是在程序执行过程中出现的一个例外或者是一个事件,它中断了程序的正常运行,跳转到其他模块继续执行。无论是错误还是异常,都必须妥善处理,并作出相应的反映,希望不要丢失数据或者导致程序崩溃。
1.异常处理的实现
try{
//可能出现异常的代码块,这里可以使用throw语句抛出异常
}catch(ex1){
//处理异常,也可以再次抛出异常
}
2.捕获多个异常
在try代码块之后,必须至少跟一个catch代码块,也可以将多个catch代码块与一个try代码块进行关联实现多异常捕获。
日期和时间
UNIX时间戳
UNIX时间戳是从1970年1月1日零点(UTC/GMT的午夜)开始到当前时间所经历的秒数。
函数time()获取当前时间戳 //获取的是秒数
由于我们并不适应看秒数推算时间,可使用date()函数
代码:
1 date("Y-m-d H:i:s",time());
将日期和时间转变成UNIX时间戳
调用mktime()函数 mktime(时,分,秒,月,日,年)
将英文文本的日期时间描述直接转变成UNIX时间戳
调用strtotime()函数 strtotime(string)
代码:
1 $year=1992; 2 $month=06; 3 $day=02; 4 $birthday=mktime(0,0,0,$month,$day,$year); 5 $nowdate=time(); 6 $ageunix=$nowdate-$birthday; 7 $age=floor($ageunix/(60*60*24*365)); 8 echo "年龄:$age ";
在PHP中获取时间
time()获取当前UNIX时间戳
getdate()确定当前时间
gettimeofday()获取某一天的具体时间
修改PHP默认时区
1.当前页面设置
date_default_timezone_set("PRC"); //设置我们当前时区是中华人民共和国时区
date_default_timezone_get(); //获取当前时区信息
2.配置文件设置
date.timezone = "UTC"
注:可以通过这种方式,将当前时区改为 PRC