예외 발생시키기
Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 55번째.
때로는 코드에서 무언가 잘못되었음을 알리고 정상적인 실행을 중단해야 할 때가 있습니다. throw 키워드를 사용하면 예외를 수동으로 생성하고 발생시킬 수 있으며, 프로그램이 오류 조건을 처리해야 하는 시점과 이유를 제어할 수 있습니다.
예외를 던질 때, 새로운 Exception 객체를 생성하고 무엇이 잘못되었는지에 대한 설명 메시지를 제공합니다. 이 예외는 즉시 현재 코드 실행을 중단하고 이를 처리할 catch 블록을 찾습니다.
<?php
function checkAge($age) {
if ($age < 0) {
throw new Exception("Age cannot be negative");
}
echo "Age is valid: " . $age;
}
try {
checkAge(-5);
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>throw 문은 new Exception() 구문을 필요로 하며, 여기에서 문제 상황을 설명하는 문자열 메시지를 전달합니다. 이 메시지는 나중에 catch 블록 내의 getMessage() 메서드를 사용하여 검색할 수 있으며, 이를 통해 무엇이 잘못되었는지 이해하고 적절하게 대응하기가 더 쉬워집니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
챌린지
쉬움두 개의 입력을 받게 됩니다: 가격을 나타내는 숫자와 할인율을 나타내는 숫자입니다. 두 입력 모두 숫자로 제공됩니다 (가격은 소수일 수 있으며, 할인율은 0에서 100 사이의 정수입니다).
두 입력을 읽고 가격과 할인율이라는 두 개의 매개변수를 받는 calculateFinalPrice라는 함수를 만드세요. 이 함수 내부에서 할인율이 100보다 크거나 0보다 작은지 확인하세요. 두 조건 중 하나라도 참이면, "Invalid discount percentage"라는 메시지와 함께 새로운 Exception을 던지세요. 할인이 유효하면, 할인을 적용한 후의 최종 가격을 계산하여 반환하세요.
제공된 입력으로 함수를 호출하기 위해 try...catch 블록을 사용하세요. try 블록에서는 함수를 호출하고 "Final price: " 뒤에 계산된 최종 가격을 출력하세요. catch 블록에서는 getMessage() 메서드를 사용하여 "Error: " 뒤에 예외 메시지를 출력함으로써 예외를 처리하세요.
입력 형식:
- 첫 번째 줄: 가격을 나타내는 숫자 (예:
100또는49.99) - 두 번째 줄: 할인율을 나타내는 정수 (예:
20또는150)
예상 출력:
- 할인이 유효한 경우:
Final price:뒤에 할인 후 계산된 가격 출력 - 할인이 유효하지 않은 경우:
Error: Invalid discount percentage
치트 시트
throw 키워드를 사용하여 수동으로 예외를 생성하고 발생시킬 수 있습니다:
throw new Exception("Error message");예외가 발생하면, 일반적인 실행이 중단되고 이를 처리할 catch 블록을 찾습니다:
<?php
function checkAge($age) {
if ($age < 0) {
throw new Exception("Age cannot be negative");
}
echo "Age is valid: " . $age;
}
try {
checkAge(-5);
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>catch 블록 내에서 getMessage() 메서드를 사용하여 예외 메시지를 가져올 수 있습니다.
직접 해보기
<?php
// 입력 읽기
$price = floatval(fgets(STDIN));
$discountPercentage = intval(fgets(STDIN));
// TODO: 아래에 코드를 작성하세요
// calculateFinalPrice 함수 생성
// try...catch 블록을 사용하여 함수를 호출하고 예외를 처리하세요
// 적절한 출력을 인쇄하세요
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.