Rumah >pembangunan bahagian belakang >tutorial php >Amalan terbaik untuk fungsi PHP: pengendalian pengecualian dan pengelogan?

Amalan terbaik untuk fungsi PHP: pengendalian pengecualian dan pengelogan?

WBOY
WBOYasal
2024-05-04 12:06:021101semak imbas

Pengendalian dan pengelogan pengecualian adalah penting dalam fungsi PHP: tangkap pengecualian melalui blok cuba/tangkap dan buang pengecualian tersuai. Gunakan perpustakaan pengelogan seperti PSR-3 atau Monolog untuk log peristiwa dan kedudukan mesej log berdasarkan keterukan. Log pengecualian untuk menyediakan lebih banyak konteks dan mengambil tindakan yang sesuai sekiranya berlaku ralat input.

PHP 函数的最佳实践:异常处理和日志记录?

Amalan Terbaik untuk Fungsi PHP: Pengendalian Pengecualian dan Pengelogan

Pengendalian dan pengelogan pengecualian adalah penting dalam menulis fungsi PHP yang mantap dan boleh dipercayai. Dengan menggunakan teknologi yang sesuai, anda boleh mengendalikan ralat, log peristiwa dan memberikan cerapan berharga untuk penyelesaian masalah dan penyahpepijatan dengan berkesan.

Pengendalian pengecualian

Pengendalian pengecualian dalam PHP pada asasnya menggunakan blok cuba/tangkap untuk menangkap dan mengendalikan pengecualian yang berlaku dalam kod. Berikut ialah langkah untuk membina mekanisme pengendalian pengecualian yang baik:

Gunakan blok cuba/tangkap:

try {
  // 您的代码在此处
} catch (Exception $e) {
  // 捕获异常后的处理逻辑
}

Baling pengecualian tersuai:

Gunakan pernyataan lontaran untuk melontar pengecualian tersuai yang memberikan maklumat yang lebih khusus tentang ralat:

class CustomException extends Exception {}

function myFunction() {
  // 抛出自定义异常
  throw new CustomException("错误发生");
}

Gunakan mekanisme cuba semula:

Untuk beberapa pengecualian sementara, anda boleh mempertimbangkan untuk menggunakan mekanisme cuba semula untuk mencuba semula permintaan:

$retries = 3;
$success = false;
for ($i = 0; $i < $retries; $i++) {
  try {
    // 您的代码在此处
    $success = true;
    break;
  } catch (Exception $e) {
    // 重试逻辑
  }
}

Logging

Log adalah penting untuk merekodkan peristiwa penting sistem yang berlaku. PHP menyediakan fungsi pengelogan terbina dalam yang boleh digunakan untuk mencipta fail log yang berbeza untuk tujuan berbeza:

Menggunakan perpustakaan pengelogan PSR-3:

PSR-3 ialah spesifikasi pengelogan yang mentakrifkan antara muka standard, Untuk memudahkan kebolehoperasian antara perpustakaan pembalakan yang berbeza. Anda boleh menggunakan beberapa perpustakaan popular seperti jambatan log Monolog atau PSR-3:

// Monolog 日志记录库
$logger = new Monolog\Logger('my_logger');
$logger->info('日志消息');

// PSR-3 日志记录桥
$logger = new \Psr\Log\LoggerInterface('my_logger');
$logger->info('日志消息');

Cipta tahap log yang berbeza:

Anda boleh gred mesej log berdasarkan keterukan mereka, seperti maklumat, amaran dan ralat :

$logger->info('一般信息');
$logger->warning('潜在问题');
$logger->error('严重错误');

Pengecualian Pengelogan:

Pengecualian juga boleh dilog ke fail log untuk menyediakan lebih banyak konteks tentang ralat:

try {
  // 您的代码在此处
} catch (Exception $e) {
  $logger->error($e);
}

Contoh Praktikal

Cipta fungsi mudah yang mengira jumlah dua nombor, dan Gunakan pengendalian pengecualian untuk mengendalikan ralat input dan pengelogan untuk merekod tindakan:

function sum($a, $b) {
  // 检查非数字输入
  if (!is_numeric($a) || !is_numeric($b)) {
    throw new InvalidArgumentException("非法输入");
  }

  // 尝试进行求和
  try {
    $result = $a + $b;

    // 记录操作
    log_message('info', "计算 $a 和 $b 的和:$result");

    return $result;
  } catch (InvalidArgumentException $e) {
    log_message('error', $e->getMessage());
    throw $e;
  }
}

Dengan menggunakan blok cuba/tangkap, melontar pengecualian tersuai dan pengelogan yang betul, anda mencipta fungsi yang teguh dan mudah untuk nyahpepijat walaupun ralat berlaku juga boleh memberikan maklumat yang berharga.

Atas ialah kandungan terperinci Amalan terbaik untuk fungsi PHP: pengendalian pengecualian dan pengelogan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn