Ngoại lệ PHP đối với chuỗi

Hỗ trợ » Trình cắm. Nút chia sẻ phương tiện truyền thông xã hội. MashShare » Ngoại lệ trong quá trình truyền chuỗi trong PHP 8

Ngoại lệ trong quá trình truyền chuỗi trong PHP 8

  • Đã giải quyết ryzedigitalmah

    (@ryzedigitalmah)


    8 tháng trước

    Sử dụng PHP8 và phiên bản WP mới nhất, lớp Rolling Curl X dường như đưa ra một ngoại lệ khi chuyển điều khiển cuộn tròn thành chuỗi
    Kể từ khi PHP 8 giới thiệu một lớp CurlHandle, điều này có thể cần phải được thay đổi từ
    $key = (chuỗi) $ch;
    ĐẾN
    $key = spl_object_hash($ch);
    Nếu bạn muốn giữ khả năng tương thích với Phiên bản PHP cũ hơn, bạn có thể muốn gói nó trong một số loại if-else
    if(is_resource($ch)) {
    $key = (chuỗi) $ch;
    } khác {
    $key = spl_object_hash($ch);
    }

Đang xem 2 trả lời - 1 đến 2 (trong tổng số 2)

  • Rene Hermenau

    (@renehermi)

    Xin chào @ryzedigitalmah

    Cảm ơn rất nhiều. Đây là một sản phẩm tuyệt vời

    NHƯ tôi đang tìm người bảo trì cho MashShare, bạn có muốn trò chuyện một chút không?
    Bạn có thể liên hệ trực tiếp với tôi tại bộ phận hỗ trợ [at] mashshare. mạng lưới

    Chúc mừng
    rené

    Rene Hermenau

    (@renehermi)

    Điều này được giải quyết trong bản phát hành mới nhất

Đang xem 2 trả lời - 1 đến 2 (trong tổng số 2)

  • Bạn phải đăng nhập để trả lời chủ đề này

(PHP 5 >= 5. 1. 0, PHP7)

Ngoại lệ. getTraceAsString - Lấy dấu vết ngăn xếp dưới dạng chuỗi

Sự miêu tả

ngoại lệ chuỗi công khai cuối cùng. getTraceAsString ( khoảng trống )

Thông số

Chức năng này không có tham số

Giá trị trả về

Trả về dấu vết ngăn xếp ngoại lệ dưới dạng một chuỗi

ví dụ

Ví dụ #1 Ngoại lệ. getTraceAsString() ví dụ

function test() {
    throw new Exception;
}

try {
    test();
} catch(Exception $e) {
    echo $e->getTraceAsString();
}
?>

Ví dụ trên sẽ xuất ra một cái gì đó tương tự như

#0 /home/bjori/tmp/ex.php(7): test()
#1 {main}

Các ngoại lệ được ném vào PHP có thể tùy chọn in thông tin ngoại lệ trên màn hình hoặc trả về một chuỗi có ngoại lệ, bao gồm cả dấu vết ngăn xếp

function test() {
    try {
        throw new \Exception();
    }
    catch (Exception $ex) {
        echo $ex;
    }
}

test('1234567890123456789);
Exception in ...:...
Stack trace:
#0 ...(...): test('123456789012345...')

Theo mặc định, độ dài của các tham số trong theo dõi ngăn xếp bị cắt ngắn thành 15 byte, theo sau là .... Lưu ý cách dòng bị cắt ngắn thành 15 byte, theo sau là dấu chấm lửng

test('123456789012345...')

Trong PHP7. 4, một cài đặt INI mới có tên zend.exception_ignore_args đã được thêm vào, cài đặt này có thể ẩn hoàn toàn thông tin tham số khỏi dấu vết ngăn xếp

zend.exception_ignore_args=false

Một lệnh INI như trên sẽ ẩn hoàn toàn các tham số trong dấu vết ngăn xếp

Trong PHP8. 0, có một lệnh INI mới để giới hạn độ dài của các tham số được hiển thị trong dấu vết ngăn xếp. Lưu ý rằng lệnh zend.exception_ignore_args vẫn có thể ẩn hoàn toàn thông tin tham số khỏi dấu vết ngăn xếp

zend.exception_string_param_max_len=42

Lệnh hơi dài nhưng rõ ràng này có thể mở rộng dấu vết ngăn xếp để hiển thị thêm thông tin trong dấu vết ngăn xếp. Chúng có thể giúp gỡ lỗi dễ dàng vì độ dài tối đa 15 byte thường không đủ cho các URL (ví dụ: ____22_______ đã là 12 byte, chỉ còn lại ba byte cho phần còn lại), truy vấn cơ sở dữ liệu, v.v.

Để ngăn cấu hình bị định cấu hình sai ghi hoặc xuất quá nhiều dữ liệu do thay đổi này, có giới hạn cố định là 1000000 byte đối với lệnh này

Lưu ý rằng thay đổi này chỉ ảnh hưởng khi một Throwable (xem phân cấp các ngoại lệ PHP) bị ép buộc thành một

Exception in ...:...
Stack trace:
#0 ...(...): test('123456789012345...')
0, được truy xuất rõ ràng dưới dạng một chuỗi hoặc khi một ngoại lệ chưa được bắt gặp được in trên màn hình

  1. Khi một
    Exception in ...:...
    Stack trace:
    #0 ...(...): test('123456789012345...')
    1 bị buộc thành chuỗi, chẳng hạn như
    Exception in ...:...
    Stack trace:
    #0 ...(...): test('123456789012345...')
    2 hoặc
    Exception in ...:...
    Stack trace:
    #0 ...(...): test('123456789012345...')
    3
  2. Khi một
    Exception in ...:...
    Stack trace:
    #0 ...(...): test('123456789012345...')
    1 được truy xuất dưới dạng chuỗi, với
    Exception in ...:...
    Stack trace:
    #0 ...(...): test('123456789012345...')
    5, tôi. e.
    Exception in ...:...
    Stack trace:
    #0 ...(...): test('123456789012345...')
    6
  3. Lỗi mặc định được in trên màn hình khi không bắt được ngoại lệ

Thay đổi này không ảnh hưởng đến hàm

Exception in ...:...
Stack trace:
#0 ...(...): test('123456789012345...')
7 hoặc phương thức
Exception in ...:...
Stack trace:
#0 ...(...): test('123456789012345...')
8 vì cả hai đều trả về dấu vết ngăn xếp đầy đủ

Tác động tương thích ngược

Giá trị cấu hình mặc định của

Exception in ...:...
Stack trace:
#0 ...(...): test('123456789012345...')
9 vẫn là
test('123456789012345...')
0 byte. Điều này có nghĩa là trừ khi giá trị này không được cập nhật, dấu vết ngăn xếp sẽ giống nhau

Làm cách nào để đọc thông báo ngoại lệ trong PHP?

Ngoại lệ PHP Phương thức getMessage() .

Làm cách nào để sử dụng ngoại lệ trong PHP?

Thử, ném và bắt .
try - 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. .
ném - Đây là cách bạn kích hoạt một ngoại lệ. .
catch - Một khối "catch" truy xuất một ngoại lệ và tạo một đối tượng chứa thông tin ngoại lệ

Các ngoại lệ trong PHP là gì?

Một ngoại lệ là đối tượng mô tả lỗi hoặc hành vi không mong muốn của tập lệnh PHP . Các ngoại lệ được đưa ra bởi nhiều hàm và lớp PHP. Các hàm và lớp do người dùng định nghĩa cũng có thể đưa ra các ngoại lệ. Ngoại lệ là một cách hay để dừng một chức năng khi gặp dữ liệu mà nó không thể sử dụng.

Làm cách nào để xử lý lỗi nghiêm trọng trong PHP?

Hàm set_error_handler() được sử dụng để cho PHP biết cách xử lý các lỗi công cụ tiêu chuẩn không phải là phiên bản của lớp ngoại lệ Lỗi. Bạn không thể sử dụng chức năng xử lý lỗi cho các lỗi nghiêm trọng. Các trường hợp ngoại lệ lỗi phải được xử lý bằng câu lệnh try/catch . set_error_handler() chấp nhận một tham số có thể gọi được.