Bài 27: Error và xử lý Exception trong php
Trang 1 trong tổng số 1 trang • Share
Bài 27: Error và xử lý Exception trong php
Chia sẻ với các thành viên diễn đàn Thương Mại bài viết:
Xử lý lỗi là quá trình đánh bắt lỗi nêu ra bởi chương trình của bạn và sau đó thực hiện hành động thích hợp. Nếu bạn sẽ xử lý lỗi đúng cách thì có thể dẫn đến nhiều hậu quả không lường trước được. Rất đơn giản trong lập trình PHP để xử lý một lỗi.
1. Xử lý hàm die()
Trong khi bạn viết chương trình PHP bạn nên kiển tra những lỗi có trong điều kiện trước khi làm tiếp và có những hành động thích hợp khi cần thiết.
Hãy thử ví dụ sau mà không cần phải tập /tmp/test.xt và với tập tin này:
<?php
if(!file_exists("/tmp/test.txt"))
{
die("File not found");
}
else
{
$file=fopen("/tmp/test.txt","r");
print"Opend file sucessfully";
}
// Test of the code here.
?>
Đây là cách bạn viết một lệnh hiệu quả. Sử dụng ký thuật abive bạn có thể dừng chương trình của bạn bất cứ khi nào nó ra lỗi và hiển thị có ý nghĩa hơn và người dùng sẽ thân thiện hơn.
2. Xác định lỗi được xử lý trong hàm có sẵn
Bạn có thể viết hàm của bạn để xử lý mọi lỗi. PHP cung cấp cho bạn một framework để xác định lỗi trong hàm sẵn có.
Hàm này có thể xử lý tối thiểu 2 thông số nhưng không thể chấp nhận lên đến 5 tham số. (file, line-number, and the error context)
Cú pháp:
error_function(error_level,error_message,error_file,error_line,error_context);
Tham sốMô tả
error_levelRequired – Xác định mức độ báo cáo lỗi cho các lỗi người dùng định nghĩa. Phải là một số giá trị.
error_messageRequired- Chỉ định các thông báo lỗi cho các lỗi người dùng định nghĩa
error_fileOptional – Chỉ định tên tập tin trong đó xảy ra lỗi
error_lineOptional – Chỉ định số dòng, trong đó xảy ra lỗi
error_contextOptional – Chỉ định một mảng chứa tất cả các biến và giá trị của chúng được sử dụng khi xảy ra lỗi
– Mức lỗi: Mức các báo cáo lỗi là các loại khác nhau của các lỗi xử lý lỗi người dùng định nghĩa có thể sử dụng.
bảng
Tất cả các mức lỗi trên có thể được thiết lập bằng cách sử dụng PHP sau đây, được xây dựng chức năng thư viện, noi cấp cab là bất kỳ một giá trị được xác định trong bảng.
interror_reporting([int$level])
Theo sau cách này bạn có thể tạo 1 lỗi trong xử lý
<?php
functionhandleError($errno,$errstr,$error_file,$error_line)
{
echo"<b>Error:</b> [$errno] $errstr - $error_file:$error_line";
echo"<br />";
echo"Terminating PHP Script";
die();
}
?>
Một khi bạn xác định lỗi xử lý của bạn, bạn cần phải cài đặt nó bằng cách sử dụng PHP được xây dựng trong thư viện chức năngset_error_handler . Bây giờ cho phép kiểm tra ví dụ của chúng tôi bằng cách gọi một chức năng mà không tồn tại.
<?php
error_reporting(E_ERROR);
functionhandleError($errno,$errstr,$error_file,$error_line)
{
echo"<b>Error:</b> [$errno] $errstr - $error_file:$error_line";
echo"<br />";
echo"Terminating PHP Script";
die();
}
//set error handler
set_error_handler("handleError");
//trigger error
myFunction();
?>
3. Exceptions Handling
PHP 5 đã có một mô hình ngoại lệ tương tự như các ngôn ngữ lập trình khác. Trừ trường hợp là quan trọng và cung cấp một kiểm soát tốt hơn việc xử lý lỗi.
– Try: Một chức năng bằng cách sử dụng một ngoại lệ phải ở trong một khối “try”. Nếu trường hợp ngoại lệ không kích hoạt, mã sẽ tiếp tục như bình thường. Tuy nhiên nếu các ngoại lệ gây nên, một ngoại lệ nữa là “thrown”.
– Throw: Đây là cách bạn kích hoạt một ngoại lệ. Mỗi “throw” phải có ít nhất một “catch”.
– Catch: Một khối “catch” lấy ra một ngoại lệ và tạo ra một đối tượng có chứa các thông tin ngoại lệ.
Khi một ngoại lệ được thrown, đoạn mã sau tuyên bố sẽ không được thực thi, và PHP sẽ cố gắng để tìm thấy những khối hợp bắt đầu. Nếu một ngoại lệ không bị bắt, một PHP Fatal Lỗi sẽ được cấp một “Uncaught Exception …
– Một ngoại lệ có thể được thrown, và bắt (“catched“) trong PHP. Luật có thể được bao bọc trong một khối try.
– Mỗi khi thử phải có ít nhất một khối catch tương ứng. Nhiều khối catch có thể được sử dụng để bắt các lớp khác nhau củaexeptions.
– Trường hợp ngoại lệ có thể được thrown (hoặc re-thrown) trong một khối catch.
Ví dụ:
<?php
try{
$error='Always throw this error';
thrownewException($error);
// Code following an exception is not executed.
echo'Never executed';
}catch(Exception$e){
echo'Caught exception: ',$e->getMessage(),"\n";
}
// Continue execution
echo'Hello World';
?>
Trong ví dụ trên hàm $e->getMessage được dùng để có được thông báo lỗi. Có chức năng sau đó có thể được sử dụng từ lớp Exception.
– getMessage() – thông điệp của ngoại lệ
– getCode() – mã trường hợp ngoại lệ
– getfile() – nguồn filename
– getline() – nguồn dòng
– getTrace() – mảng n của backtrace()
– getTraceAsString() – chuỗi formated của dấu vết
Tạo Custom Exception Handler
Bạn có thể định nghĩa xử lý custom excpetion của riêng bạn. Sử dụng chức năng sau đây để thiết lập một chức năng xử lý ngoại lệ người dùng định nghĩa.
stringset_exception_handler(callback$exception_handler)
Ở đây exception_handler là tên của hàm được gọi khi một ngoại lệ còn tự do xảy ra. Chức năng này phải được xác định trước khi gọi set_exception_handler ().
<?php
functionexception_handler($exception){
echo"Uncaught exception: ",$exception->getMessage(),"\n";
}
set_exception_handler('exception_handler');
thrownewException('Uncaught Exception');
echo"Not Executed\n";
Bạn có thể kiểm tra toàn bộ chức năng xử lý lỗi tại: PHP Error Handling Functions.
Trung tâm đào tạo lap trinh android và hoc photoshop từ Cơ bản đến Nâng cao tại Vietpro !
Nguồn: http://hocthietkeweb.net.vn/bai-27-error-va-xu-ly-exception.html
Xử lý lỗi là quá trình đánh bắt lỗi nêu ra bởi chương trình của bạn và sau đó thực hiện hành động thích hợp. Nếu bạn sẽ xử lý lỗi đúng cách thì có thể dẫn đến nhiều hậu quả không lường trước được. Rất đơn giản trong lập trình PHP để xử lý một lỗi.
1. Xử lý hàm die()
Trong khi bạn viết chương trình PHP bạn nên kiển tra những lỗi có trong điều kiện trước khi làm tiếp và có những hành động thích hợp khi cần thiết.
Hãy thử ví dụ sau mà không cần phải tập /tmp/test.xt và với tập tin này:
<?php
if(!file_exists("/tmp/test.txt"))
{
die("File not found");
}
else
{
$file=fopen("/tmp/test.txt","r");
print"Opend file sucessfully";
}
// Test of the code here.
?>
Đây là cách bạn viết một lệnh hiệu quả. Sử dụng ký thuật abive bạn có thể dừng chương trình của bạn bất cứ khi nào nó ra lỗi và hiển thị có ý nghĩa hơn và người dùng sẽ thân thiện hơn.
2. Xác định lỗi được xử lý trong hàm có sẵn
Bạn có thể viết hàm của bạn để xử lý mọi lỗi. PHP cung cấp cho bạn một framework để xác định lỗi trong hàm sẵn có.
Hàm này có thể xử lý tối thiểu 2 thông số nhưng không thể chấp nhận lên đến 5 tham số. (file, line-number, and the error context)
Cú pháp:
error_function(error_level,error_message,error_file,error_line,error_context);
Tham sốMô tả
error_levelRequired – Xác định mức độ báo cáo lỗi cho các lỗi người dùng định nghĩa. Phải là một số giá trị.
error_messageRequired- Chỉ định các thông báo lỗi cho các lỗi người dùng định nghĩa
error_fileOptional – Chỉ định tên tập tin trong đó xảy ra lỗi
error_lineOptional – Chỉ định số dòng, trong đó xảy ra lỗi
error_contextOptional – Chỉ định một mảng chứa tất cả các biến và giá trị của chúng được sử dụng khi xảy ra lỗi
– Mức lỗi: Mức các báo cáo lỗi là các loại khác nhau của các lỗi xử lý lỗi người dùng định nghĩa có thể sử dụng.
bảng
Tất cả các mức lỗi trên có thể được thiết lập bằng cách sử dụng PHP sau đây, được xây dựng chức năng thư viện, noi cấp cab là bất kỳ một giá trị được xác định trong bảng.
interror_reporting([int$level])
Theo sau cách này bạn có thể tạo 1 lỗi trong xử lý
<?php
functionhandleError($errno,$errstr,$error_file,$error_line)
{
echo"<b>Error:</b> [$errno] $errstr - $error_file:$error_line";
echo"<br />";
echo"Terminating PHP Script";
die();
}
?>
Một khi bạn xác định lỗi xử lý của bạn, bạn cần phải cài đặt nó bằng cách sử dụng PHP được xây dựng trong thư viện chức năngset_error_handler . Bây giờ cho phép kiểm tra ví dụ của chúng tôi bằng cách gọi một chức năng mà không tồn tại.
<?php
error_reporting(E_ERROR);
functionhandleError($errno,$errstr,$error_file,$error_line)
{
echo"<b>Error:</b> [$errno] $errstr - $error_file:$error_line";
echo"<br />";
echo"Terminating PHP Script";
die();
}
//set error handler
set_error_handler("handleError");
//trigger error
myFunction();
?>
3. Exceptions Handling
PHP 5 đã có một mô hình ngoại lệ tương tự như các ngôn ngữ lập trình khác. Trừ trường hợp là quan trọng và cung cấp một kiểm soát tốt hơn việc xử lý lỗi.
– Try: Một chức năng bằng cách sử dụng một ngoại lệ phải ở trong một khối “try”. Nếu trường hợp ngoại lệ không kích hoạt, mã sẽ tiếp tục như bình thường. Tuy nhiên nếu các ngoại lệ gây nên, một ngoại lệ nữa là “thrown”.
– Throw: Đây là cách bạn kích hoạt một ngoại lệ. Mỗi “throw” phải có ít nhất một “catch”.
– Catch: Một khối “catch” lấy ra một ngoại lệ và tạo ra một đối tượng có chứa các thông tin ngoại lệ.
Khi một ngoại lệ được thrown, đoạn mã sau tuyên bố sẽ không được thực thi, và PHP sẽ cố gắng để tìm thấy những khối hợp bắt đầu. Nếu một ngoại lệ không bị bắt, một PHP Fatal Lỗi sẽ được cấp một “Uncaught Exception …
– Một ngoại lệ có thể được thrown, và bắt (“catched“) trong PHP. Luật có thể được bao bọc trong một khối try.
– Mỗi khi thử phải có ít nhất một khối catch tương ứng. Nhiều khối catch có thể được sử dụng để bắt các lớp khác nhau củaexeptions.
– Trường hợp ngoại lệ có thể được thrown (hoặc re-thrown) trong một khối catch.
Ví dụ:
<?php
try{
$error='Always throw this error';
thrownewException($error);
// Code following an exception is not executed.
echo'Never executed';
}catch(Exception$e){
echo'Caught exception: ',$e->getMessage(),"\n";
}
// Continue execution
echo'Hello World';
?>
Trong ví dụ trên hàm $e->getMessage được dùng để có được thông báo lỗi. Có chức năng sau đó có thể được sử dụng từ lớp Exception.
– getMessage() – thông điệp của ngoại lệ
– getCode() – mã trường hợp ngoại lệ
– getfile() – nguồn filename
– getline() – nguồn dòng
– getTrace() – mảng n của backtrace()
– getTraceAsString() – chuỗi formated của dấu vết
Tạo Custom Exception Handler
Bạn có thể định nghĩa xử lý custom excpetion của riêng bạn. Sử dụng chức năng sau đây để thiết lập một chức năng xử lý ngoại lệ người dùng định nghĩa.
stringset_exception_handler(callback$exception_handler)
Ở đây exception_handler là tên của hàm được gọi khi một ngoại lệ còn tự do xảy ra. Chức năng này phải được xác định trước khi gọi set_exception_handler ().
<?php
functionexception_handler($exception){
echo"Uncaught exception: ",$exception->getMessage(),"\n";
}
set_exception_handler('exception_handler');
thrownewException('Uncaught Exception');
echo"Not Executed\n";
Bạn có thể kiểm tra toàn bộ chức năng xử lý lỗi tại: PHP Error Handling Functions.
Trung tâm đào tạo lap trinh android và hoc photoshop từ Cơ bản đến Nâng cao tại Vietpro !
Nguồn: http://hocthietkeweb.net.vn/bai-27-error-va-xu-ly-exception.html
teenddeem- Cấp 0
- Bài gửi : 5
Điểm : 3421
Like : 0
Tham gia : 18/07/2015
Similar topics
» Fix lỗi: Database connection error in joomla
» Thăng Long Group là một trong số ít các doanh nghiệp tại Việt Nam đã trú trọng trong việc đào tạo nguồn nhâ
» [TP.HCM] Nhạc cụ Vũ Hải: Trống cajon, trống văn nghệ, trống thiếu nhi, guitar điện....
» Nhạc cụ Vũ Hải: Trống cajon, trống văn nghệ, trống thiếu nhi, guitar điện....
» Cơ sở sản xuất trống đục, trống họ, trống hat chèo văn
» Thăng Long Group là một trong số ít các doanh nghiệp tại Việt Nam đã trú trọng trong việc đào tạo nguồn nhâ
» [TP.HCM] Nhạc cụ Vũ Hải: Trống cajon, trống văn nghệ, trống thiếu nhi, guitar điện....
» Nhạc cụ Vũ Hải: Trống cajon, trống văn nghệ, trống thiếu nhi, guitar điện....
» Cơ sở sản xuất trống đục, trống họ, trống hat chèo văn
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết