펄 오류 처리
프로그램은 항상 그러한 존재하지 않는 파일 열기와 같은 에러의 다양한 발생 실행된다.
오류가 발생하면 중지 실행중인 프로그램, 우리는 따라서, 프로그램이 종료 방지 검출 오류를 방지하기 위해 몇 가지 방법을 사용할 필요가있다.
펄 방법에서 제조 된 다중 처리 오류를 제공하고, 우리는 하나씩 도입했다.
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