public class FinallySelaluJalan {
    static void uji(String skenario) {
        System.out.println("--- " + skenario);
        try {
            switch (skenario) {
                case "normal" -> System.out.println("try selesai tanpa kegagalan");
                case "tertangkap" -> throw new NumberFormatException("abc");
                case "kembali" -> {
                    System.out.println("try melakukan return");
                    return;
                }
                default -> throw new IllegalStateException("tidak ditangkap di sini");
            }
        } catch (NumberFormatException e) {
            System.out.println("catch menangani: " + e.getMessage());
        } finally {
            System.out.println("finally berjalan");
        }
        System.out.println("setelah try-catch-finally");
    }

    public static void main(String[] args) {
        uji("normal");
        uji("tertangkap");
        uji("kembali");
        try {
            uji("lepas");
        } catch (IllegalStateException e) {
            System.out.println("main menangkap: " + e.getMessage());
        }
    }
}
