hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Lập trình PHP cơ bản
Xử lý lỗi ngoại lệ, giới thiệu khối try…catch trong PHP

Xử lý lỗi ngoại lệ, giới thiệu khối try…catch trong PHP

  • 13-03-2023
  • Toanngo92
  • 0 Comments

Mục lục

  • Hàm die()
  • Xử lý ngoại lệ
  • Khối lệnh try catch
  • Ném ngoại lệ (Throwing Exceptions)
  • Đối tượng Exception

Hàm die()

Người dùng phải đánh giá bất kỳ tình trạng lỗi nào trong khi viết mã PHP. Mục đích của hàm die() tương tự như mục đích của hàm exit(). Tuy nhiên, nó cũng có thể giúp xử lý lỗi. die() có thể được sử dụng để tạm dừng chương trình nếu bắt gặp bất kỳ lỗi nào có thể xảy ra.

Ví dụ:

$filename = "example.txt";

$file = fopen($filename, "r") or die("Unable to open file!");

// Rest of code...

fclose($file);

Xử lý ngoại lệ

Một ngoại lệ là một sự kiện xảy ra trong quá trình thực thi chương trình dẫn đến sự gián đoạn luồng hướng dẫn bình thường của chương trình. Thông thường, lỗi thời gian chạy gây ra ngoại lệ.

PHP có mô hình xử lý ngoại lệ tương tự như một số ngôn ngữ lập trình khác. Ngoại lệ cung cấp khả năng kiểm soát tốt hơn khi xử lý lỗi. Điều này làm cho chúng cực kỳ quan trọng trong lập trình.

Cơ chế xử lý ngoại lệ trong lập trình:

  • try: Chúng ta đặt logic khối lệnh bên trong try, nếu khối lệnh chạy không gặp bất kỳ lỗi runtime nào, tất cả lệnh bên trong khối try sẽ được thực thi tuần tự cho tới khi kết thúc khối, nếu gặp
  • catch: khối lệnh bên trong catch sẽ được chạy khi bất kỳ lệnh nào trong khối try gặp lỗi.
  • throw: từ khóa throw được sử dụng khi gặp logic muốn chủ động ném ra ngoại lệ và nhảy vào khối catch. Sử dụng throw bắt buộc phải có từ khóa catch

Khi một ngoại lệ được ném ra, chương trình sau câu lệnh sẽ ngừng chạy. Sau đó, PHP sẽ cố gắng định vị khối catch tương ứng đầu tiên. Trong trường hợp không bắt được ngoại lệ, người dùng sẽ thấy PHP Fatal Error gây ảnh hưởng tới trải nghiệm người dùng.

Những điều quan trọng cần nhớ khi ném một ngoại lệ như sau:

  • Trong một khối catch, các ngoại lệ có thể được throw (ném) hoặc re-throw (ném lại).
  • Mỗi khối try phải có tối thiểu một khớp với một khối catch. Người dùng có thể sử dụng nhiều hơn một khối catch để bắt nhiều loại ngoại lệ.
  • Có thể bắt và ném một ngoại lệ trong PHP. Mã có thể bắt ngoại lệ thành công có thể được bao gồm trong khối try.

Khối lệnh try catch

Người dùng có thể thực hiện câu lệnh try … catch để bắt ngoại lệ và để bắt ngoại lệ và tiếp tục quá trình.

Cú pháp:

try{
// todo
}catch($exception){
// todo
}
<?php
try {
    $val = 5/0;
    echo $val;
} catch (\DivisionByZeroError $e) {
    echo "Sorry, division not possible";
}
echo "<br><br>Program continues further.";
?>

Người dùng cũng có thể sử dụng try … catch … finally để bắt ngoại lệ.

Mã được viết trong khối finally sẽ luôn được thực thi bất kể ngoại lệ có bị bắt hay không. Khối catch là tùy chọn nếu khối finally đã tồn tại và việc bắt ngoại lệ không phải là ưu tiên.

Cú pháp:

try{
// todo
}catch($exception){
// todo
}finally{
// todo
}

Ví dụ:

<?php
try {
    $val = 5/0;
    echo $val;
} catch (DivisionByZeroError $e) {
    echo "Sorry, division not feasible";
} finally {
    echo "<br><br>Program continues further.";
}
?>

Ném ngoại lệ (Throwing Exceptions)

Các lớp PHP khác nhau ‘throw’ một ngoại lệ. Các lớp do người dùng định nghĩa cũng có thể đưa ra các ngoại lệ.

Ví dụ:

<?php
function divide($dividend, $divisor) {
    if ($divisor === 0) {
        throw new Exception('Division by zero.');
    }
    return $dividend / $divisor;
}

try {
    $value = divide(5, 0);
    echo $value;
} catch(Exception $ex) {
    echo 'Caught exception: ', $ex->getMessage();
}
?>

Đối tượng Exception

Đối tượng Exception bao gồm thông tin về hành vi không lường trước được hoặc lỗi mà một chức năng gặp phải.

Mô tả các tham số (parameter) được sử dụng với đối tượng Exception:

Tham sốMô tả
PreviousKhông bắt buộc. Đây là một chuỗi giải thích lý do tại sao một ngoại lệ đã được đưa ra
CodeKhông bắt buộc. Đây là một số nguyên có thể được sử dụng để phân biệt
ngoại lệ này với các ngoại lệ khác cùng kiểu
messageKhông bắt buộc. Bạn nên chuyển một ngoại lệ vào tham số thông báo nếu ngoại lệ đó bị ném vào khối catch của các ngoại lệ khác.

Một số phương thức có thể được sử dụng để truy xuất thông tin về một ngoại lệ trong khi bắt nó.

Mô tả các phương thức (method) được sử dụng với đối tượng Exception:

Phương thứcMô tả
getPrevious()Phương thức này trả về một ngoại lệ trước đó nếu ngoại lệ đó được kích hoạt bởi một ngoại lệ khác.
getFile()Phương thức này trả về đường dẫn đầy đủ của tệp trong đó ngoại lệ được đưa ra.
getMessage()Phương thức này trả về một chuỗi giải thích lý do ném ngoại lệ.
getCode()Phương thức này trả về mã ngoại lệ.
getLine()Phương thức này trả về số dòng của dòng mã mà ngoại lệ được ném ra.

Ví dụ:

<?php
try {
    $numerator = 10;
    $denominator = 0;
    if ($denominator == 0) {
        throw new Exception('Division by zero.');
    }
    $result = $numerator / $denominator;
    echo "The result is: " . $result;
} catch (Exception $e) {
    echo "Caught exception: " . $e->getMessage() . $e->getFile() . $e->getPrevious() . $e->getCode(). $e->getLine();
} finally {
    echo "<br> This block gets executed no matter what.";
}
?>

Bài viết liên quan:

Hướng dẫn sử dụng xdebug để gỡ lỗi PHP bằng visual studio code môi trường windows
Hướng dẫn cấu hình Extension live server tự động tải lại PHP khi cập nhật file trên visual studio code
Kỹ thuật AJAX trong PHP
Làm việc với JSON trong PHP
Chuyển hướng trình duyệt, download file bằng HTTP Header trong PHP
Một số cải tiến mới của PHP 8
Nhận dạng trình duyệt và nền tảng trong PHP
Từ khóa final, static, overloading và magic method trong PHP
Abstract Class (lớp trừu tượng) trong PHP
Interface trong hướng đối tượng PHP
Method (phương thức), public,private,protected, method overriding trong hướng đối tượng PHP
Iterable và iterator trong PHP

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Một số cải tiến trong ASP.NET Core, Razor Page, Model Binding, Gabbage collection

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×