Giới thiệu
Các khối thử - bắt có thể được lồng vào bất kỳ mức độ mong muốn nào. Các ngoại lệ sẽ được xử lý theo thứ tự ngược lại của sự xuất hiện, tức là xử lý ngoại lệ trong cùng được thực hiện trước.
Ví dụ
Trong ví dụ sau, khối try bên trong kiểm tra xem một trong hai biến thể không phải là số, và nếu có, ném một ngoại lệ do người dùng xác định. Khối thử bên ngoài ném DivisionByZeroError nếu mẫu số là 0. Nếu không, phép chia hai số được hiển thị.
Ví dụ
<?php class myException extends Exception{ function message(){ return "error : " . $this->getMessage() . " in line no " . $this->getLine(); } } $x=10; $y=0; try{ if (is_numeric($x)==FALSE || is_numeric($y)==FALSE) throw new myException("Non numeric data"); } catch (myException $m){ echo $m->message(); return; } if ($y==0) throw new DivisionByZeroError ("Division by 0"); echo $x/$y; } catch (DivisionByZeroError $e){ echo $e->getMessage() ."in line no " . $e->getLine(); } ?>
Đầu ra
Kết quả sau được hiển thị
Division by 0 in line no 19
Thay đổi bất kỳ một trong các biến thể thành giá trị không phải số
error : Non numeric data in line no 20
Nếu cả hai biến đều là số, phép chia của chúng sẽ được in ra