Xử lý ngoại lệ được sử dụng để thay đổi luồng thông thường của mã thực thi nếu xảy ra lỗi điều kiện [lỗi] được chỉ định. Điều kiện này được gọi là một ngoại lệ
Đây là những điều thường xảy ra khi một ngoại lệ được kích hoạt
- Trạng thái mã hiện tại đã được lưu
- Việc thực thi mã này sẽ chuyển sang hàm xử lý ngoại lệ đã được xác định trước [tùy chỉnh]
- Tùy thuộc vào vấn đề, trình xử lý sau đó có thể tiếp tục thực thi tệp từ trạng thái mã đã lưu, dấu chấm phẩy thực thi tệp lệnh hoặc tiếp tục xử lý tệp lệnh từ một vị trí khác trong mã hóa
Chúng tôi sẽ hiển thị các phương pháp xử lý lỗi khác nhau
- Sử dụng các ngoại lệ cơ bản
- Tạo một tùy chỉnh xử lý ngoại lệ
- Nhiều trường hợp ngoại lệ
- Ném lại một ngoại lệ
- Set the process out error level cao nhất
Lưu ý. Các trường hợp ngoại lệ chỉ nên được sử dụng với các lỗi điều kiện và không nên được sử dụng để nhảy đến một nơi khác trong mã tại một điểm được chỉ định. Các ngoại lệ chỉ nên được sử dụng với các điều kiện lỗi và không được sử dụng để nhảy đến một vị trí khác trong mã tại một điểm đã chỉ định
Sử dụng các ngoại lệ cơ bản
Khi một ngoại lệ bị ném, mã theo sau nó sẽ không được thực thi và PHP sẽ cố gắng tìm khối "bắt" phù hợp
Nếu một ngoại lệ không bị bắt, một lỗi gây ra tử vong sẽ được đưa ra với một thông báo "ngoại lệ chưa được thực hiện"
Hãy cố gắng loại bỏ một ngoại lệ mà không bắt được nó
//kích hoạt Checknum ngoại lệ [2];
checkNum[2];
?>
Mã trên sẽ gặp lỗi như thế này
Lỗi nghiêm trọng. Ngoại lệ 'ngoại lệ' với giá trị thông báo 'phải là 1 hoặc dưới' trong C. \ WebFolder \ kiểm tra. php. 6 dấu vết ngăn xếp. #0 độ C. \ WebFolder \ kiểm tra. php [12]. CheckNum [28] #1 {main} ném vào C. \ WebFolder \ kiểm tra. php on line 6. Ngoại lệ chưa bắt được 'Ngoại lệ'
với thông báo 'Giá trị phải từ 1 trở xuống' trong C. \webfolder\test. php. 6
Theo dõi ngăn xếp. #0 độ C. \webfolder\test. php[12].
checkNum[28] #1 {main} ném vào C. \webfolder\test. php trên dòng 6
Attempt, put and catch
Để tránh lỗi từ ví dụ trên, chúng ta cần tạo mã thích hợp để xử lý một ngoại lệ
Mã ngoại lệ thích hợp nên bao gồm
try
- Một hàm sử dụng ngoại lệ phải nằm trong khối "thử". Nếu 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 tác nhân ngoại lệ, một ngoại lệ là "ném"throw
- Đây là cách bạn kích hoạt một ngoại lệ. Mỗi "ném" phải có ít nhất một "bắt"catch
- Khối "bắt" lấy một ngoại lệ và tạo một đối tượng chứa thông tin ngoại lệ
Please try to activate a exception with valid code
Mã trên sẽ gặp lỗi như thế này.
catch[Exception $e] {
echo 'Thông báo. '. $e->getMessage[];
}
?>
Mã trên sẽ gặp lỗi như thế này
Lỗi nghiêm trọng. Ngoại lệ 'ngoại lệ' với giá trị thông báo 'phải là 1 hoặc dưới' trong C. \ WebFolder \ kiểm tra. php. 6 dấu vết ngăn xếp. #0 độ C. \ WebFolder \ kiểm tra. php [12]. CheckNum [28] #1 {main} ném vào C. \ WebFolder \ kiểm tra. php on line 6
Attempt, put and catch
Để tránh lỗi từ ví dụ trên, chúng ta cần tạo mã thích hợp để xử lý một ngoại lệ
- Mã ngoại lệ thích hợp nên bao gồm
try
- Một hàm sử dụng ngoại lệ phải nằm trong khối "thử". Nếu 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 tác nhân ngoại lệ, một ngoại lệ là "ném"throw
- Đây là cách bạn kích hoạt một ngoại lệ. Mỗi "ném" phải có ít nhất một "bắt"catch
- Khối "bắt" lấy một ngoại lệ và tạo một đối tượng chứa thông tin ngoại lệ- Please try to activate a exception with valid code
// The default off off process in the block "thử" try
// Start Exception Catch [Ngoại lệ $e] . '. $e->getMessage[];
Thông báo. Giá trị phải là 1 hoặc dưới
Ví dụ giải thích
Mã trên ném một ngoại lệ và bắt nó
Hàm Checknum [] đã được tạo. Nó kiểm tra xem một số lớn hơn 1. Nếu có, một ngoại lệ bị ném
class customException extends Exception {
public function errorMessage[] {
//thông báo lỗi . $this->getLine[]. ' Trong '. $this->getFile[]
$errorMsg = 'Error on line '.$this->getLine[].' in '.$this->getFile[]
. '. '. $this->getMessage[]. ' không phải là địa chỉ Email hợp lệ';
return $errorMsg;
}
}
Hàm CheckNum[] được gọi trong khối "thử"
Ngoại lệ trong hàm CheckNum [] bị ném
//check if
if[filter_var[$email, FILTER_VALIDATE_EMAIL] === FALSE]
//throw exception if email is not valid
throw new customException[$email];
}
}
Khối "bắt" ngoại lệ và tạo một đối tượng [$e] chứa thông tin ngoại lệ
//hiển thị thông báo tùy chỉnh
echo
}
?>
Thông báo lỗi từ ngoại lệ được lặp lại bằng cách gọi $e->getMessage[] từ đối tượng ngoại lệ
Ví dụ giải thích
Mã trên ném một ngoại lệ và bắt nó với một lớp ngoại lệ tùy chỉnh
- Lớp CustomException[] được tạo như một phần mở rộng của lớp ngoại lệ cũ. Bằng cách này, nó kế thừa tất cả các phương thức và thuộc tính từ lớp ngoại lệ cũ
- Hàm errorMessage[] được tạo. Hàm này trả về một thông báo lỗi nếu địa chỉ e-mail không hợp lệ
- Biến email $ được đặt thành một chuỗi không phải là địa chỉ e-mail hợp lệ
- Block "thử" đã được thực thi và một lỗi ngoại lệ đã bị loại bỏ vì địa chỉ e-mail không hợp lệ
- Khối "Bắt" bắt lỗi ngoại lệ và hiển thị thông báo lỗi
Nhiều trường hợp ngoại lệ
Có thể chọn một tập lệnh sử dụng nhiều ngoại lệ để kiểm tra nhiều điều kiện
Có thể sử dụng một số khối IF. khác, một công tắc hoặc tổ chức nhiều ngoại lệ. Các ngoại lệ này có thể sử dụng các lớp ngoại lệ khác nhau và trả về các thông báo lỗi khác nhau
theo hàng[]. ' in '. $ this-> getfile [] . '. '. $this->getMessage[]. ' không phải là địa chỉ e-mail hợp lệ '; . $this->getLine[]. ' Trong '. $this->getFile[]
class customException extends Exception {
public function errorMessage[] {
//error message
$errorMsg = 'Error on line '.$this->getLine[].' in '.$this->getFile[]
. '. '. $this->getMessage[]. ' không phải là địa chỉ Email hợp lệ';
return $errorMsg;
}
}
$ email = "";
Please try & nbsp; . == FALSE] {
//check if
if[filter_var[$email, FILTER_VALIDATE_EMAIL] === FALSE] {
//throw exception if email is not valid
throw new customException[$email];
}
//check for "example" in mail address
if[strpos[$email, "example"] !== FALSE] {
throw new Exception["$email là email mẫu"];
}
}
Bắt [CustomException $ e] & nbsp;
echo $e->errorMessage[];
}
bắt [ ngoại lệ $ e] & nbsp;
echo $e->getMessage[];
}
?>
Ví dụ giải thích
Mã trên kiểm tra hai điều kiện và đưa ra một ngoại lệ nếu bất kỳ điều kiện nào không được trả lời
- Lớp CustomException[] được tạo như một phần mở rộng của lớp ngoại lệ cũ. Bằng cách này, nó kế thừa tất cả các phương thức và thuộc tính từ lớp ngoại lệ cũ
- Hàm errorMessage[] được tạo. Hàm này trả về một thông báo lỗi nếu địa chỉ e-mail không hợp lệ
- Biến email $ được đặt thành một chuỗi không phải là địa chỉ e-mail hợp lệ
- Block "thử" đã được thực thi và một lỗi ngoại lệ đã bị loại bỏ vì địa chỉ e-mail không hợp lệ
- Khối "Bắt" bắt lỗi ngoại lệ và hiển thị thông báo lỗi
- Nhiều trường hợp ngoại lệ
Có thể chọn một tập lệnh sử dụng nhiều ngoại lệ để kiểm tra nhiều điều kiện
Có thể sử dụng một số khối IF. khác, một công tắc hoặc tổ chức nhiều ngoại lệ. Các ngoại lệ này có thể sử dụng các lớp ngoại lệ khác nhau và trả về các thông báo lỗi khác nhau
theo hàng[]. ' in '. $ this-> getfile [] . '. '. $this->getMessage[]. ' không phải là địa chỉ e-mail hợp lệ ';
$ email = "";
Please try & nbsp; . ' không phải là một địa chỉ E-Mail hợp lệ. ';
class customException extends Exception {
public function errorMessage[] {
//error message
$errorMsg = $this->getMessage[].' is not a valid E-Mail address.';
return $errorMsg;
}
}
$ email = "";
Please try & nbsp; . == FALSE] {
try {
//check for "example" in mail address
if[strpos[$email, "example"] !== FALSE] {
//ném ngoại lệ nếu email không hợp lệ
ném ngoại lệ mới[$email];
}
}
catch[Exception $e] {
//re-throw exception
throw new customException[$email];
}
}
Bắt [CustomException $ e] & nbsp;
//display custom message
echo $e->errorMessage[];
}
?>
Ví dụ giải thích
bắt [ ngoại lệ $ e] & nbsp;
- Lớp CustomException[] được tạo như một phần mở rộng của lớp ngoại lệ cũ. Bằng cách này, nó kế thừa tất cả các phương thức và thuộc tính từ lớp ngoại lệ cũ
- Hàm errorMessage[] được tạo. Hàm này trả về một thông báo lỗi nếu địa chỉ e-mail không hợp lệ
- Biến email $ được đặt thành một chuỗi không phải là địa chỉ e-mail hợp lệ
- Block "thử" đã được thực thi và một lỗi ngoại lệ đã bị loại bỏ vì địa chỉ e-mail không hợp lệ
- Khối "Bắt" bắt lỗi ngoại lệ và hiển thị thông báo lỗi
- Nhiều trường hợp ngoại lệ
- Có thể chọn một tập lệnh sử dụng nhiều ngoại lệ để kiểm tra nhiều điều kiện
Nếu ngoại lệ không bị bắt trong khối "thử" hiện tại của nó, nó sẽ tìm kiếm một khối bắt ở "cấp cao hơn"
Set the process out error level cao nhất
Hàm set_exception_handler[]
đặt chức năng xác định người dùng để xử lý tất cả các ngoại lệ chưa được thực hiện
getMessage[]; . ". $Exception->getMessage[];
function myException[$exception] {
echo "Exception: " . $exception->getMessage[];
}
set_Exception_handler['myException'];
ném exception new ['ngoại lệ chưa xảy ra'];
?>
Đầu ra của mã trên phải là một cái gì đó như thế này
Ngoại lệ. Ngoại lệ không xảy ra Uncaught Exception đã xảy ra
In code on no block "bắt". Thay vào đó, quá trình xử lý ngoại lệ cấp cao nhất đã kích hoạt. Chức năng này nên được sử dụng để bắt các ngoại lệ chưa học
Quy tắc cho các trường hợp lệ ngoại lệ
- Mã có thể được bao quanh trong một lần thử khối, để giúp nắm bắt các tiềm năng ngoại lệ
- Mỗi khối thử nghiệm hoặc "ném" phải có ít nhất một khối bị bắt tương ứng
- Có thể sử dụng nhiều khối bắt để bắt các lớp ngoại lệ khác nhau
- Các trường hợp ngoại lệ có thể bị ném [hoặc ném lại] trong một khối bắt trong khối thử nghiệm
Một quy tắc đơn giản. Nếu bạn ném một cái gì đó, bạn phải bắt nó
Làm thế nào chúng ta có thể đối phó với ngoại lệ trong PHP?
Please try, throw and started. .
Hãy thử - chức năng sử dụng ngoại lệ phải nằm trong khối "thử". Nếu ngoại lệ không kích hoạt, mã sẽ tiếp tục như bình thường.
Ném - Đây là cách bạn kích hoạt một ngoại lệ.
Bắt đầu - Khối "bắt" lấy một ngoại lệ và tạo một đối tượng chứa thông tin ngoại lệ
Sự khác biệt giữa ngoại lệ và lỗi trong PHP là gì?
Tóm tắt về sự khác biệt. Xử lý lỗi mặc định trong PHP rất đơn giản. Một thông báo lỗi với tên tệp, số dòng và thông báo mô tả lỗi được gửi đến trình duyệt. Các ngoại lệ được sử dụng để thay đổi luồng thông thường của lệnh nếu xảy ra lỗi chỉ được xác định. Điều này có thể được thực hiện bằng cách sử dụng hàm php die[]. Ngoại lệ được sử dụng để thay đổi quy trình bình thường của tập lệnh nếu xảy ra lỗi cụ thể . Điều này có thể được thực hiện bằng PHP die[] Hàm.
Có bao nhiêu loại ngoại lệ trong PHP?
Lỗi PHP. 4 loại khác nhau [cảnh báo, phân tích, gây tử vong và lỗi thông báo] 4 Các loại khác nhau [Lỗi cảnh báo, phân tích cú pháp, nghiêm trọng và thông báo]
Php out default là gì?
Từ khóa ném được sử dụng để ném ngoại lệ. Ngoại lệ là một cách để thay đổi luồng chương trình nếu sự cố không mong muốn phát sinh, giả sử như dữ liệu không hợp lệ