Kata Kunci 'throw'
Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 50 dari 56.
Terkadang, kamu perlu menandakan bahwa terjadi error di kodemu sendiri, bukan hanya menangkap exception yang dilempar oleh fungsi lain. Kata kunci throw memungkinkan kamu memicu exception secara manual ketika programmu mendeteksi masalah.
Kamu dapat melempar berbagai tipe nilai sebagai pengecualian, seperti integer, string, atau bahkan object kustom. Berikut sintaks dasarnya:
if (someErrorCondition) {
throw "Error message"; // Melempar string literal
}Saat kamu menggunakan throw, program langsung berhenti menjalankan fungsi saat ini dan mencari blok catch yang dapat menangani nilai yang dilempar. Ini sangat berguna untuk memvalidasi input atau memeriksa kondisi yang seharusnya tidak terjadi selama program berjalan normal.
Berikut contoh praktis melempar exception saat mendeteksi input yang tidak valid:
void checkAge(int age) {
if (age < 0) {
throw "Age cannot be negative!";
}
std::cout << "Age is valid: " << age << std::endl;
}Pemanggil membungkus pemanggilan tersebut dalam blok try. Literal string yang dilempar memiliki tipe const char*, jadi itulah tipe yang disebutkan oleh blok catch, dan parameternya menyimpan pesan tersebut:
try {
checkAge(-5);
} catch (const char* message) {
std::cout << "Error: " << message << std::endl;
}
// output: Error: Age cannot be negative!Kata kunci throw memberimu kendali atas kapan dan bagaimana error dilaporkan dalam programmu, sehingga fungsi-fungsimu lebih tangguh dan dapat diprediksi saat menangani kondisi yang tidak valid.
Tantangan
MudahBuat program yang menerapkan validasi input menggunakan kata kunci throw untuk memicu exception secara manual saat kondisi tidak valid terdeteksi. Tantangan ini akan menguji pemahamanmu tentang cara menggunakan throw untuk menandakan error di fungsi buatanmu sendiri.
Input berikut akan diberikan:
- Sebuah string
usernameyang menunjukkan username pilihan pengguna (baris ini bisa kosong) - Sebuah bilangan bulat
ageyang menunjukkan usia pengguna
Programmu harus:
- Membuat fungsi bernama
validateUseryang menerima string dan bilangan bulat sebagai parameter - Di dalam fungsi, memeriksa apakah username kosong (memiliki panjang 0)
- Jika username kosong,
throwstring"Username cannot be empty" - Memeriksa apakah usia kurang dari 13
- Jika usia kurang dari 13,
throwstring"Age must be at least 13" - Jika kedua validasi berhasil, mencetak
"User validation successful" - Di fungsi main, memanggil
validateUserdengan nilai input - Menggunakan blok
tryuntuk memanggil fungsi dan blokcatchuntuk menangani exception string yang dilemparkan
Gunakan format output persis berikut:
Untuk validasi yang berhasil:
User validation successfulUntuk error validasi:
Validation error: [error_message]Ingat, saat kamu menggunakan throw, program langsung berhenti menjalankan fungsi saat ini dan mencari blok catch yang cocok. Blok catch harus menentukan tipe const char* untuk menangani literal string yang dilemparkan. Jika validasi pertama gagal, fungsi akan melemparkan exception dan tidak melanjutkan pemeriksaan kondisi kedua.
Coba sendiri
#include <iostream>
#include <string>
using namespace std;
// TODO: Tulis fungsi validateUser di sini, di atas main
// Fungsi ini menerima string username dan int age, lalu melempar literal string jika pemeriksaan gagal
int main() {
// Baca input
string username;
int age;
getline(cin, username);
cin >> age;
// TODO: Panggil validateUser di dalam blok try
// dan tangkap pesan yang dilempar dengan catch (const char* error)
return 0;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Pointer dan Memori
Apa Itu Pointer?Operator Address-OfOperator DereferencePointer NullPointer dan ArrayMemori Dinamis dengan 'new'Membebaskan Memori dengan 'delete'Rangkuman: Latihan Pointer2Vektor (array Dinamis)
Memperkenalkan std::vectorMembuat VektorMenambahkan ElemenMengakses ElemenUkuran VektorIterasi dengan for loopFor loop Berbasis RentangMenghapus ElemenRangkuman: Operasi Vektor5Proyek: Alat Inventaris
Menyiapkan ProyekMenambahkan dan Memperbarui Barang8Penanganan error Dasar
Pengenalan ExceptionBlok 'try' dan 'catch'Kata Kunci 'throw'Berbagai Tipe ExceptionPenangan Semua ExceptionRingkasan: Pembagian AmanLatihan sendiri: Compiler C++ online