Menu
CoddyTech

Rekap: Pengguna Tervalidasi

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 63 dari 87.

challenge icon

Tantangan

Mudah

Mari kita buat sistem pendaftaran pengguna lengkap yang memvalidasi data input dan menggunakan exception kustom untuk menyampaikan dengan tepat apa yang salah! Kamu akan menggabungkan semua materi dari bab ini: exception checked dan unchecked kustom, hierarki exception, serta try-with-resources dengan validator yang dapat ditutup secara otomatis.

Kamu akan mengatur kodemu dalam lima file:

  • ValidationException.java: Buat exception checked yang menjadi dasar untuk semua error validasi. Exception ini harus mewarisi Exception dan menyertakan konstruktor yang menerima pesan.
  • InvalidUsernameException.java: Buat exception checked untuk kegagalan validasi username. Exception ini harus mewarisi class ValidationException-mu, sehingga membentuk hierarki exception sederhana. Sertakan konstruktor yang menerima pesan dan meneruskannya ke induknya.
  • InvalidAgeException.java: Buat exception unchecked untuk error terkait usia, seperti usia negatif yang menunjukkan error pemrograman. Exception ini harus mewarisi RuntimeException dan memiliki konstruktor yang menerima pesan.
  • UserValidator.java: Buat class yang mengimplementasikan AutoCloseable untuk menyimulasikan sesi validasi yang harus ditutup dengan benar. Validator-mu harus:

    Mencetak Validator session started di konstruktor.

    Memiliki method validateUsername(String username) yang melempar InvalidUsernameException jika username bernilai null, kosong, atau kurang dari 3 karakter (dengan pesan "Username must be at least 3 characters"). Jika tidak, cetak Username '[username]' is valid.

    Memiliki method validateAge(int age) yang melempar InvalidAgeException jika usia negatif (dengan pesan "Age cannot be negative: [age]"). Jika usia kurang dari 13, lempar ValidationException dengan pesan "Must be at least 13 years old". Jika tidak, cetak Age [age] is valid.

    Implementasikan close() untuk mencetak Validator session closed.

  • Main.java: Satukan sistem validasimu! Kamu akan menerima dua input: username (String) dan usia (bilangan bulat).

    Gunakan try-with-resources untuk membuat UserValidator. Di dalam blok try, validasi username terlebih dahulu, lalu validasi usia. Jika keduanya berhasil, cetak User registration successful!

    Tangkap InvalidUsernameException dan cetak Username error: [message]. Tangkap InvalidAgeException dan cetak Age error: [message]. Tangkap ValidationException (induknya) dan cetak Validation error: [message].

    Validator harus ditutup secara otomatis, baik validasi berhasil maupun gagal!

Kamu akan menerima dua input secara berurutan: username (String) dan usia (bilangan bulat).

Tantangan ini menggabungkan seluruh materi bab: kamu akan membuat hierarki exception dengan ValidationException sebagai induk, menggunakan exception checked dan unchecked dengan tepat, serta memastikan resource validator-mu selalu dibersihkan dengan try-with-resources. Perhatikan bagaimana menangkap induk ValidationException setelah turunannya, InvalidUsernameException, memungkinkanmu menangani kasus spesifik terlebih dahulu sambil tetap menangkap error validasi lainnya!

Coba sendiri

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Baca input
        String username = scanner.nextLine();
        int age = scanner.nextInt();
        
        // TODO: Gunakan try-with-resources untuk membuat UserValidator
        // Di dalam blok try:
        //   1. Validasi username
        //   2. Validasi age
        //   3. Jika keduanya lolos, cetak "User registration successful!"
        
        // TODO: Tangkap InvalidUsernameException dan cetak "Username error: [message]"
        
        // TODO: Tangkap InvalidAgeException dan cetak "Age error: [message]"
        
        // TODO: Tangkap ValidationException (induk) dan cetak "Validation error: [message]"
        
        // Catatan: Validator harus tertutup secara otomatis, baik validasi berhasil maupun gagal!
    }
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online