Latest web development tutorials

معالجة الأخطاء بيرل

هو برنامج التشغيل، تواجه دائما مجموعة متنوعة من الأخطاء، مثل فتح ملف غير موجود.

برنامج يشغل سوف تتوقف في حالة حدوث خطأ، ونحن بحاجة إلى استخدام بعض الطرق لتجنب الأخطاء الكشف، وبالتالي منع إنهاء البرنامج.

يوفر بيرل خطأ متعددة تجهيز المحرز في الأسلوب، ثم قدمنا ​​واحدا تلو الآخر.


إذا بيان

إذا كان البيان يمكن تحديد قيمة العائد من البيان، والأمثلة على ذلك كما يلي:

if(open(DATA, $file)){
   ...
}else{
   die "Error: 无法打开文件 - $!";
}

برنامج $ متغير! إرجاع رسالة خطأ. يمكننا أيضا تبسيط التعليمات البرمجية أعلاه إلى التعليمات البرمجية التالية:

open(DATA, $file) || die "Error: 无法打开文件 - $!";

إلا إذا وظيفة

إلا وظيفة وإذا كان العكس من ذلك، فقط عندما يعود التعبير سيتم تنفيذها على النحو التالي كاذبة:

unless(chdir("/etc")){
   die "Error: 无法打开目录 - $!";
}

إلا البيان عندما تريد تعيين خطأ تذكير مفيد جدا.ما يمكنني أيضا أن يختصر رمز أعلاه:

die "Error: 无法打开目录!: $!" unless(chdir("/etc"));

رسالة الخطأ أعلاه فقط عندما الظروف تتغير الخطأ الناتج الدليل.


مشغل الثلاثي

وفيما يلي مثال بسيط من مشغل الثلاثي:

print(exists($hash{value}) ? '存在' : '不存在',"\n");

الأمثلة المذكورة أعلاه نستخدم مشغل الثلاثي لتحديد وجود قيمة التجزئة.

وتشمل الأمثلة تعبيرا عن قيمتين، والشكلهو :؟ قيمة التعبير: القيمة الثانية.


تحذير وظيفة

يستخدم تحذير وظيفة لتحريك رسالة تحذير، أي عملية أخرى، والإخراج لSTDERR (ملف الإخراج القياسي)، وتستخدم عادة لمطالبة المستخدم:

chdir('/etc') or warn "无法切换目录";

وظيفة يموت

وظيفة يموت مشابهة للتحذير، لكنه لن يكون الخروج. عادة مع رسائل الخطأ الناتج الضوضاء الصاخبة:

chdir('/etc') or die "无法切换目录";

وحدة الكارب

في السيناريو بيرل، طريقة شيوعا هو استخدام التقرير عن الخطأ ويحذر () أو يموت () وظيفة لتوليد التقارير أو خطأ. لوحدة كارب، التي يمكن أن تولد رسائل إلى توفير مستويات إضافية من السيطرة، خصوصا داخل وحدة.

وحدة الشبوط معيار توفر تحذير () ويموت () وظيفة بديلا، لأنها توفر المزيد من المعلومات في توفير المواقع خطأ، وأكثر ودية. عند استخدامها في وحدة نمطية تحتوي على رسالة خطأ اسم الوحدة النمطية ورقم السطر.

وظيفة الكارب

وظيفة الكارب يمكن إخراج تتبع المعلومات حول البرنامج، مماثل للتحذير وظيفة سوف ترسل عادة المعلومات إلى STDERR:

package T;

require Exporter;
@ISA = qw/Exporter/;
@EXPORT = qw/function/;
use Carp;

sub function {
   carp "Error in module!";
}
1;

في البرنامج النصي يدعو الإجراء التالي:

use T;
function();

البرنامج المذكور أعلاه، والناتج هو:

Error in module! at test.pl line 4

وظيفة قرقرة الدجاج

قرقرة الدجاج () وتحذير () هو ما شابه ذلك، قدمت خطأ في كومة ظهر أثر.

package T;

require Exporter;
@ISA = qw/Exporter/;
@EXPORT = qw/function/;
use Carp qw(cluck);

sub function {
   cluck "Error in module!";
}
1;

في البرنامج النصي يدعو الإجراء التالي:

use T;
function();

البرنامج المذكور أعلاه، والناتج هو:

Error in module! at T.pm line 9
	T::function() called at test.pl line 4

وظيفة تشاءم

تشاءم () ويموت ()، كما يمكن الانتهاء من السيناريو.

package T;

require Exporter;
@ISA = qw/Exporter/;
@EXPORT = qw/function/;
use Carp;

sub function {
   croak "Error in module!";
}
1;

في البرنامج النصي يدعو الإجراء التالي:

use T;
function();

البرنامج المذكور أعلاه، والناتج هو:

Error in module! at test.pl line 4

وظيفة أعترف

الاعتراف () ويموت () مشابه، ولكن يقدم من الخطأ المكدس ظهر أثر.

package T;

require Exporter;
@ISA = qw/Exporter/;
@EXPORT = qw/function/;
use Carp;

sub function {
   confess "Error in module!";
}
1;

في البرنامج النصي يدعو الإجراء التالي:

use T;
function();

البرنامج المذكور أعلاه، والناتج هو:

Error in module! at T.pm line 9
	T::function() called at test.pl line 4