一个大的项目中有大半部分程序是用来处理错误与异常的,die()常用,
die()
die —
等同于 exit(),但还可以打印文字出来。
die("文件不存在");
相当于exit();
echo "文件不存在";
异常处理:
$file = fopen("aa.txt","r");
echo "ok";
这样会出现问题,因为没有处理文件;所以异常处理需要对它先判断是否存在:if(file_exists("aa.txt"))
{
$file = fopen("aa.txt","r");
echo "ok";
fclose();
} else
{
die("文件不存在");
}
- Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
- Throw - 这里规定如何触发异常。每一个 "throw" 必须对应至少一个 "catch"
- Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象
让我们触发一个异常:
1 <?php 2 //创建可抛出一个异常的函数 3 function checkNum($number){ 4 if($number>1){ 5 throw new Exception("Value must be 1 or below"); 6 } 7 return true; 8 } 9 10 //在 "try" 代码块中触发异常 11 try{ 12 checkNum(2); 13 //如果异常被抛出,那么下面一行代码将不会被输出 14 echo 'If you see this, the number is 1 or below'; 15 }catch(Exception $e){ 16 //捕获异常 17 echo 'Message: ' .$e->getMessage(); 18 } 19 ?>
上面代码将获得类似这样一个错误:
Message: Value must be 1 or below
例子解释:
上面的代码抛出了一个异常,并捕获了它:
- 创建 checkNum() 函数。它检测数字是否大于 1。如果是,则抛出一个异常。
- 在 "try" 代码块中调用 checkNum() 函数。
- checkNum() 函数中的异常被抛出
- "catch" 代码块接收到该异常,并创建一个包含异常信息的对象 ($e)。
- 通过从这个 exception 对象调用 $e->getMessage(),输出来自该异常的错误消息
路径问题:
绝对路径:就是文件所在的具体位置,如:
“D:/photos/1.jpg”;
相对路径:与程序所在位置有关,如:
“1.jpg”