D 프로그래밍-예외 처리
예외는 프로그램 실행 중에 발생하는 문제입니다. AD 예외는 0으로 나누려는 시도와 같이 프로그램이 실행되는 동안 발생하는 예외적 인 상황에 대한 응답입니다.
예외는 프로그램의 한 부분에서 다른 부분으로 제어를 전송하는 방법을 제공합니다. D 예외 처리는 세 개의 키워드를 기반으로합니다.try, catch, 및 throw.
throw− 문제가 발생하면 프로그램에서 예외가 발생합니다. 이것은throw 예어.
catch− 프로그램은 문제를 처리하려는 프로그램의 위치에서 예외 처리기로 예외를 포착합니다. 그만큼catch 키워드는 예외 포착을 나타냅니다.
try − A tryblock은 특정 예외가 활성화 된 코드 블록을 식별합니다. 그 뒤에는 하나 이상의 catch 블록이 있습니다.
블록이 예외를 발생 시킨다고 가정하면 메서드는 다음 조합을 사용하여 예외를 포착합니다. try 과 catch키워드. 예외를 생성 할 수있는 코드 주위에 try / catch 블록이 배치됩니다. try / catch 블록 내의 코드를 보호 코드라고하며 try / catch를 사용하는 구문은 다음과 같습니다.
try {
// protected code
}
catch( ExceptionName e1 ) {
// catch block
}
catch( ExceptionName e2 ) {
// catch block
}
catch( ExceptionName eN ) {
// catch block
}
여러 목록을 나열 할 수 있습니다. catch 다른 유형의 예외를 포착하는 문 try block은 서로 다른 상황에서 둘 이상의 예외를 발생시킵니다.
D에서 예외 발생
예외는 다음을 사용하여 코드 블록 내 어디에서나 발생할 수 있습니다. throw진술. throw 문의 피연산자는 예외의 유형을 결정하며 모든식이 될 수 있으며 식의 결과 유형에 따라 throw되는 예외의 유형이 결정됩니다.
다음 예제는 0으로 나누기 조건이 발생하면 예외를 throw합니다.
예
double division(int a, int b) {
if( b == 0 ) {
throw new Exception("Division by zero condition!");
}
return (a/b);
}
D에서 예외 잡기
그만큼 catch 다음 블록 try블록은 모든 예외를 포착합니다. 포착하려는 예외 유형을 지정할 수 있으며 이는 catch 키워드 다음에 괄호 안에 표시되는 예외 선언에 의해 결정됩니다.
try {
// protected code
}
catch( ExceptionName e ) {
// code to handle ExceptionName exception
}
위의 코드는 다음과 같은 예외를 포착합니다. ExceptionName유형. catch 블록이 try 블록에서 발생하는 모든 유형의 예외를 처리하도록 지정하려면 다음과 같이 예외 선언을 둘러싼 괄호 사이에 줄임표, ...를 넣어야합니다.
try {
// protected code
}
catch(...) {
// code to handle any exception
}
다음 예제에서는 0으로 나누기 예외가 발생합니다. 캐치 블록에 걸려 있습니다.
import std.stdio;
import std.string;
string division(int a, int b) {
string result = "";
try {
if( b == 0 ) {
throw new Exception("Cannot divide by zero!");
} else {
result = format("%s",a/b);
}
} catch (Exception e) {
result = e.msg;
}
return result;
}
void main () {
int x = 50;
int y = 0;
writeln(division(x, y));
y = 10;
writeln(division(x, y));
}
위의 코드가 컴파일되고 실행되면 이전 섹션에서 생성 된 파일을 읽고 다음과 같은 결과를 생성합니다.
Cannot divide by zero!
5