Ngoại lệ php

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ó

1] & nbsp;
//create function with an exception
function checkNum[$number] {
  if[$number>1] {
    throw new Exception["Value must be 1 or below"];
  }
  return true;
}

//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

  1. 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"
  2. 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"
  3. 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

1] & nbsp;
//create function with an exception
function checkNum[$number] {
  if[$number>1] {
    throw new Exception["Value must be 1 or below"];
  }
  return true;
}

//kích hoạt Checknum ngoại lệ [2];
try {
  checkNum[2];
  //If the exception is thrown, this text will not be shown
  echo 'If you see this, the number is 1 or below';
}

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ệ

  1. Mã ngoại lệ thích hợp nên bao gồm
  2. 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"
  3. 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"
  4. 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ệ
  5. 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

  1. 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ũ
  2. 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ệ
  3. Biến email $ được đặt thành một chuỗi không phải là địa chỉ e-mail hợp lệ
  4. 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ệ
  5. 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

  1. 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ũ
  2. 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ệ
  3. Biến email $ được đặt thành một chuỗi không phải là địa chỉ e-mail hợp lệ
  4. 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ệ
  5. Khối "Bắt" bắt lỗi ngoại lệ và hiển thị thông báo lỗi
  6. 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;

  1. 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ũ
  2. 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ệ
  3. Biến email $ được đặt thành một chuỗi không phải là địa chỉ e-mail hợp lệ
  4. 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ệ
  5. Khối "Bắt" bắt lỗi ngoại lệ và hiển thị thông báo lỗi
  6. Nhiều trường hợp ngoại lệ
  7. 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ộ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ệ

Chủ Đề