Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Jawa coba ... tangkap

Jawa coba...tangkap

Dalam tutorial ini, kita akan belajar tentang pernyataan try catch di Java dengan bantuan contoh.

try...catch blok di Java digunakan untuk menangani pengecualian dan mencegah penghentian program yang tidak normal.

Berikut sintaks try...catch blokir di Jawa.

try{
  // code
}
catch(exception) {
  // code
}

try blok menyertakan kode yang mungkin menghasilkan pengecualian.

catch blok termasuk kode yang dieksekusi ketika terjadi pengecualian di dalam try blokir.

Contoh:Java try...catch block

class Main {
  public static void main(String[] args) {

    try {
      int divideByZero = 5 / 0;
      System.out.println("Rest of code in try block");
    }

    catch (ArithmeticException e) {
      System.out.println("ArithmeticException => " + e.getMessage());
    }
  }
}

Keluaran

ArithmeticException => / by zero

Pada contoh di atas, perhatikan baris,

int divideByZero = 5 / 0;

Di sini, kami mencoba membagi angka dengan nol . Dalam hal ini, pengecualian terjadi. Oleh karena itu, kami telah menyertakan kode ini di dalam try blokir.

Ketika program menemukan kode ini, ArithmeticException terjadi. Dan, pengecualian ditangkap oleh catch memblokir dan mengeksekusi kode di dalam catch blokir.

catch blok hanya dijalankan jika ada pengecualian di dalam try blokir.

Catatan :Di Java, kita bisa menggunakan try blokir tanpa catch memblokir. Namun, kami tidak dapat menggunakan catch blokir tanpa try blokir.


Jawa coba...akhirnya blokir

Kita juga dapat menggunakan try blok bersama dengan blok akhirnya.

Dalam hal ini, blok akhirnya selalu dieksekusi apakah ada pengecualian di dalam blok coba atau tidak.

Contoh:Java coba...akhirnya blokir

class Main {
  public static void main(String[] args) {
    try {
      int divideByZero = 5 / 0;
    }

    finally {
      System.out.println("Finally block is always executed");
    }
  }
}

Keluaran

Finally block is always executed
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at Main.main(Main.java:4)

Pada contoh di atas, kami telah menggunakan try blok bersama dengan finally memblokir. Kita dapat melihat bahwa kode di dalam try blok menyebabkan pengecualian.

Namun, kode di dalam finally blok dieksekusi terlepas dari pengecualian.


Java try...catch...akhirnya blokir

Di Java, kita juga bisa menggunakan blok terakhir setelah try...catch memblokir. Misalnya,

import java.io.*;

class ListOfNumbers {

  // create an integer array
  private int[] list = {5, 6, 8, 9, 2};

  // method to write data from array to a fila
  public void writeList() {
    PrintWriter out = null;

    try {
      System.out.println("Entering try statement");

      // creating a new file OutputFile.txt
      out = new PrintWriter(new FileWriter("OutputFile.txt"));

      // writing values from list array to Output.txt
      for (int i = 0; i < 7; i++) {
        out.println("Value at: " + i + " = " + list[i]);
      }
    }
    
    catch (Exception e) {
      System.out.println("Exception => " + e.getMessage());
    }
    
    finally {
      // checking if PrintWriter has been opened
      if (out != null) {
        System.out.println("Closing PrintWriter");
        // close PrintWriter
        out.close();
      }
      
      else {
        System.out.println("PrintWriter not open");
      }
    }

  }
}

class Main {
  public static void main(String[] args) {
    ListOfNumbers list = new ListOfNumbers();
    list.writeList();
  }
}

Keluaran

Entering try statement
Exception => Index 5 out of bounds for length 5
Closing PrintWriter

Pada contoh di atas, kita telah membuat sebuah array bernama list dan file bernama output.txt . Di sini, kami mencoba membaca data dari array dan menyimpannya ke file.

Perhatikan kodenya,

for (int i = 0; i < 7; i++) {
  out.println("Value at: " + i + " = " + list[i]);
}

Di sini, ukuran array adalah 5 dan elemen terakhir dari array berada di list[4] . Namun, kami mencoba mengakses elemen di a[5] dan a[6] .

Oleh karena itu, kode menghasilkan pengecualian yang ditangkap oleh blok catch.

Sejak finally blok selalu dieksekusi, kami telah menyertakan kode untuk menutup PrintWriter di dalam blok terakhir.

Ini adalah praktik yang baik untuk menggunakan blok akhirnya untuk memasukkan kode pembersihan penting seperti menutup file atau koneksi.

Catatan :Ada beberapa kasus ketika finally blok tidak dijalankan:


Beberapa blok Tangkapan

Untuk setiap try blok, bisa ada nol atau lebih catch blok. Beberapa catch blok memungkinkan kita untuk menangani setiap pengecualian secara berbeda.

Tipe argumen dari setiap catch blok menunjukkan jenis pengecualian yang dapat ditangani olehnya. Misalnya,

class ListOfNumbers {
  public int[] arr = new int[10];

  public void writeList() {

    try {
      arr[10] = 11;
    }
    
    catch (NumberFormatException e1) {
      System.out.println("NumberFormatException => " + e1.getMessage());
    }
    
    catch (IndexOutOfBoundsException e2) {
      System.out.println("IndexOutOfBoundsException => " + e2.getMessage());
    }

  }
}

class Main {
  public static void main(String[] args) {
    ListOfNumbers list = new ListOfNumbers();
    list.writeList();
  }
}

Keluaran

IndexOutOfBoundsException => Index 10 out of bounds for length 10

Dalam contoh ini, kami telah membuat array integer bernama arr berukuran 10 .

Karena indeks array dimulai dari 0 , elemen terakhir dari array berada di arr[9] . Perhatikan pernyataannya,

arr[10] = 11;

Di sini, kami mencoba menetapkan nilai ke indeks 10 . Oleh karena itu, IndexOutOfBoundException terjadi.

Ketika pengecualian terjadi di try blokir,


Menangkap Beberapa Pengecualian

Dari Java SE 7 dan yang lebih baru, sekarang kita dapat menangkap lebih dari satu jenis pengecualian dengan satu catch blokir.

Ini mengurangi duplikasi kode dan meningkatkan kesederhanaan dan efisiensi kode.

Setiap jenis pengecualian yang dapat ditangani oleh catch blok dipisahkan menggunakan bilah vertikal | .

Sintaksnya adalah:

try {
  // code
} catch (ExceptionType1 | Exceptiontype2 ex) { 
  // catch block
}

Untuk mempelajari lebih lanjut, kunjungi Java yang menangkap beberapa pengecualian.


Pernyataan try-with-resources Java

coba-dengan-sumber daya pernyataan adalah pernyataan percobaan yang memiliki satu atau lebih deklarasi sumber daya.

Sintaksnya adalah:

try (resource declaration) {
  // use of the resource
} catch (ExceptionType e1) {
  // catch block
}

Resource adalah objek yang akan ditutup pada akhir program. Itu harus dideklarasikan dan diinisialisasi dalam pernyataan try.

Mari kita ambil contoh.

try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) {
  // use of the resource
}

coba-dengan-sumber daya pernyataan juga disebut sebagai manajemen sumber daya otomatis . Pernyataan ini secara otomatis menutup semua sumber daya di akhir pernyataan.

Untuk mempelajari lebih lanjut, kunjungi pernyataan java try-with-resources.


java

  1. Operator Jawa
  2. Komentar Jawa
  3. Java untuk setiap Loop
  4. String Jawa
  5. Antarmuka Jawa
  6. Kelas Anonim Java
  7. Penanganan Pengecualian Java
  8. Java menangkap Beberapa Pengecualian
  9. Java mencoba-dengan-sumber daya
  10. Anotasi Jawa