Menu
CoddyTech

Blok 'try' dan 'catch'

Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 49 dari 56.

Blok try dan catch bekerja sama untuk membuat jaring pengaman bagi kodemu. Kamu menempatkan kode yang berpotensi berisiko di dalam blok try, dan jika terjadi pengecualian, program akan melompat ke blok catch yang sesuai untuk menangani error dengan baik.

Berikut struktur sintaks dasarnya:

try {
    // Kode yang mungkin memunculkan pengecualian
} catch (exception_type e) {
    // Kode untuk menangani pengecualian
}

Contoh praktisnya adalah mengonversi string menjadi angka menggunakan std::stoi, yang dapat melempar pengecualian std::invalid_argument jika string berisi karakter nonnumerik:

try {
    std::string input = "abc";
    int number = std::stoi(input);  // Ini akan melempar exception
    std::cout << "Number: " << number << std::endl;
} catch (std::invalid_argument& e) {
    std::cout << "Invalid input! Please enter a valid number." << std::endl;
}

Ketika exception terjadi di blok try, program langsung berhenti menjalankan sisa kode di blok tersebut dan beralih ke blok catch. Ini mencegah programmu crash dan memungkinkan kamu memberikan umpan balik yang bermakna kepada pengguna saat terjadi masalah.

challenge icon

Tantangan

Mudah

Buat program yang menunjukkan konversi string ke angka dengan aman menggunakan blok try dan catch. Tantangan ini akan menguji pemahamanmu tentang cara menangani exception yang terjadi saat mengonversi input pengguna dari string menjadi integer.

Input berikut akan diberikan:

  • Sebuah string userInput yang mungkin merupakan integer valid atau bukan

Programmu harus:

  1. Menempatkan konversi string ke integer di dalam blok try menggunakan std::stoi
  2. Jika konversi berhasil, cetak angka yang sudah dikonversi dengan pesan keberhasilan
  3. Gunakan blok catch untuk menangani exception std::invalid_argument yang terjadi saat string berisi karakter nonangka
  4. Di dalam blok catch, cetak pesan error yang menunjukkan bahwa input tidak valid

Gunakan format output berikut secara persis:

Untuk konversi yang berhasil:

Valid number: [converted_number]

Untuk input tidak valid yang memicu exception:

Error: Invalid input

Ingat bahwa std::stoi akan memicu exception std::invalid_argument saat menemukan string yang tidak dapat dikonversi menjadi integer. Blok try harus berisi percobaan konversi, dan blok catch harus mencantumkan tipe exception sebagai std::invalid_argument& untuk menangani error khusus ini. Saat exception terjadi, program akan langsung berpindah dari blok try ke blok catch yang cocok, sehingga program tidak mengalami crash.

Coba sendiri

#include <iostream>
#include <string>
using namespace std;

int main() {
    // Baca input
    string userInput;
    cin >> userInput;
    
    // TODO: Tulis kodemu di bawah ini
    // Gunakan blok try-catch dengan std::stoi untuk mengonversi string
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C++ online