PHP包括try catch

时间:2014-07-18 21:40:48

标签: php

我需要让代码工作,但它似乎根本不起作用。它应该使用页面中的代码(如果它存在),但如果它不存在则会重定向到404 page

try {
    include "/pages/". $_GET["page"] . ".php";
} catch (Exception $e) {
    header("Location: /?page=404");
}

3 个答案:

答案 0 :(得分:2)

include不会抛出异常,因此无法在try / catch中使用。但是,您可以检查文件是否存在,如果不存在,则抛出一个将被try / catch块捕获的异常:

try {
   $path = "/pages/". $_GET["page"] . ".php";

   if ( ! file_exists($path)) {
       throw new \Exception('File does not exist');
   }

   include $path;
} catch (Exception $e) {
    header("Location: /?page=404");
}

或者您可以删除try / catch并使用file_exists

答案 1 :(得分:0)

它不会起作用。包括不会抛出任何例外。

你应该这样简单:

$file = "/pages/". (isset($_GET["page"]) ?: $_GET["page"] :'')  . ".php";

if (file_exists($file)) {
   include $file;
}
else {
   header("Location: /?page=404");
   exit; // you should use it after redirection
}

答案 2 :(得分:0)

尝试

<?php
if ((include "/pages/". $_GET["page"] . ".php") !== 1)
{
    die('Include failed.');
}
?>

或者如果你需要捕捉异常

<?php
if ((include "/pages/". $_GET["page"] . ".php") !== 1)
{
    throw new Exception("Include failed");
}
?>