Latest web development tutorials

펄 오류 처리

프로그램은 항상 그러한 존재하지 않는 파일 열기와 같은 에러의 다양한 발생 실행된다.

오류가 발생하면 중지 실행중인 프로그램, 우리는 따라서, 프로그램이 종료 방지 검출 오류를 방지하기 위해 몇 가지 방법을 사용할 필요가있다.

펄 방법에서 제조 된 다중 처리 오류를 제공하고, 우리는 하나씩 도입했다.


if 문

문은 명령문의 반환 값을 확인할 수있는 경우다음과 같이 예입니다 :

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

프로그램 변수 $는! 오류 메시지를 반환. 우리는 또한 다음 코드에 위의 코드를 단순화 할 수 있습니다 :

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

기능하지 않는

기능않는 한 반대의 경우, 표현은 다음과 같이 구현됩니다 false를 반환하는 경우에만 :

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

당신은 알림 오류를 설정할 문않는 매우 유용합니다.또한 위의 코드로 축약 할 수있는 일 :

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

상황이 디렉토리 오류 출력이 변경됩니다 만 위의 오류 메시지.


삼항 연산자

다음은 삼항 연산자의 간단한 예입니다 :

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

우리는 삼원 연산자를 사용하여 상기 실시 예는 해시 값이 있는지를 결정한다.

값 II : 예 포맷이 식의 값을 :?하고,두 값의 표현을포함했다.


함수 경고

경고 기능이 경고 메시지, 다른 작업, 일반적으로 사용자에게 메시지를 표시하는 데 사용 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