Chuyển tới nội dung
Home » Try Catch Trong Java | Ví Dụ Về Cách Sử Dụng Try Catch Trong Java

Try Catch Trong Java | Ví Dụ Về Cách Sử Dụng Try Catch Trong Java

Java 27 . Cách bắt lỗi ngoại lệ bằng try catch trong lập trình Java | Phần 1 - Lập Trình Java Cơ Bản

Ví dụ về cách sử dụng try catch trong java

Ở phần này mình sẽ giới thiệu cho các bạn một số ví dụ để các bạn làm quen với try catch trong Java nhé.
Tuy nhiên, đầu tiên, nếu chúng ta không sử dụng try catch, hãy thử chạy một đoạn code lỗi sau, xem trình biên dịch sẽ báo như thế nào nhé.

public class TryCatchDemo {

public static void main(String[] args) {

int data = 5 / 0;

System.out.println(“Phép chia cho 0”);

Và đây là kết quả:

Exception in thread “main” java.lang.ArithmeticException: / by zero
at demo.TryCatchDemo.main(TryCatchDemo.java:5)

Trình biên dịch đã dừng lại ngay tại dòng

int data = 5 / 0

và ném ra một ngoại lệ (exception) ở trong màn hình console.
Lúc này dòng

System.out.println("Phép chia cho 0");

chưa được thực thi.
Sau đây chúng ta sử dụng try catch để xử lý ngoại lệ chia cho số 0 trên xem sao nhé.

Ví dụ 1: Sử dụng try catch trong Java (với chỉ một khối catch)

public class TryCatchDemo {

public static void main(String[] args) {

//Xử lý ngoại lệ bằng try catch trong Java

try {

int data = 5 / 0;

} catch (ArithmeticException e) {

//In ra màn hình tên ngoại lệ

System.out.println(e);

System.out.println(“Phép chia cho 0”);

Và đây là kết quả:

java.lang.ArithmeticException: / by zero
Phép chia cho 0

Nếu như bình thường (giống ở ví dụ trên) thì lẽ ra chia một số cho số 0 thì chương trình Java sẽ gặp lỗi và dừng thực thi.

->

Câu lệnh sau đó System.out.println(“Phép chia cho 0”); sẽ không bao giờ được thực thi.
Nhưng ở đây, cho dù gặp lỗi chia cho số 0 nhưng câu lệnh sau đó vẫn được thực thi.
Điều này chứng tỏ rằng, try catch đã làm việc thành công. Nó đã bắt được ngoại lệ và tiếp tục thực thi dòng chảy bình thường của chương trình.
Tiếp theo, chúng ta có thể sử dụng nhiều khối lệnh catch như ví dụ sau:

Ví dụ 2: Sử dụng try catch trong Java (với nhiều khối catch)

Trước tiên, bạn hãy đọc qua ví dụ ở dưới đây và xem kết quả. Mình sẽ giải thích ví dụ này sau:

public class TryCatchDemo {

public static void main(String[] args) {

try {

int arr[] = new int[5];

arr[6] = 4;

System.out.println(“arr[6 = ” + arr[6]);

int data = 0;

int div = 10 / data;

System.out.println(“Average = ” + div);

String obj = null;

System.out.println(obj.length());

} catch (NullPointerException ex) {

System.out.println(ex);

} catch (ArithmeticException ex) {

System.out.println(ex);

} catch (ArrayIndexOutOfBoundsException ex) {

System.out.println(ex);

System.out.println(“Finished!”);

Kết quả:

java.lang.ArrayIndexOutOfBoundsException: 6
Finished!

Ở ví dụ này, mình thử tạo một mảng với 5 phần tử.
Mình biết rõ là Java không cho phép truy cập vào phần tử không tồn tại trong mảng. Nhưng mình vẫn làm để cho nó xảy ra lỗi (Sau đó sẽ bắt ngoại lệ ArrayIndexOutOfBoundsException)
Tiếp theo nữa, mình cố gắng tạo ra một lỗi NullPointerException và một lỗi toán học (lỗi chia cho số 0)
Sau đó mình ném tất cả code thực thi vào khối try.
Ngay sau đó, mình lần lượt tạo ra các khối catch để bắt từng loại ngoại lệ mà mình nghĩ rằng trong quá trình thực thi sẽ xảy ra.

Lưu ý!
Khi bắt gặp một ngoại lệ, trình biên dịch Java sẽ ngay lập tức thực thi xử lý ngoại lệ tương ứng (do đó, nó thoát khỏi khối try và không tìm thấy 2 ngoại lệ khác mà mình đã cố tạo ra)

Ví dụ 3: Sử dụng try finally trong Java (ngoại lệ xảy ra nhưng không được xử lý)

Ở ví dụ này, mình thử bắt ngoại lệ với khối catch, nhưng mình sẽ bắt ngoại lệ không đúng.

public class TryCatchDemo {

public static void main(String[] args) {

try {

int data = 5 / 0;

} catch (NullPointerException ex) {

System.out.println(ex);

} finally {

System.out.println(“Khối lệnh finally luôn được thực thi”);

System.out.println(“Finished!”);

Kết quả:

Khối lệnh finally luôn được thực thi
Exception in thread “main” java.lang.ArithmeticException: / by zero
at demo.TryCatchDemo.main(TryCatchDemo.java:6)

Và cũng ví dụ này, nhưng mình thử không sử dụng khối catch:

public class TryCatchDemo {

public static void main(String[] args) {

try {

int data = 5 / 0;

} finally {

System.out.println(“Khối lệnh finally luôn được thực thi”);

System.out.println(“Finished!”);

Bạn thử chạy chương trình trên xem kết quả như thế nào?
Như phần đầu đã trình bày thì khối

finally

luôn luôn được thực hiện dù có xảy ra ngoại lệ hay không.
Trong ví dụ trên, ngoại lệ có xảy ra nhưng mình cố tình bắt sai mã ngoại lệ, đúng ra phải là

ArithmeticException

chứ không phải là

NullPointerException

.
Do đó ngoại lệ vẫn xảy ra vì chưa bắt đúng, nhưng dòng

System.out.println("Khối lệnh finally luôn được thực thi");

vẫn được thực thi và in ra màn hình, trong khi chương trình đã stop, không thực thi câu lệnh

System.out.println("Finished!");

Ví dụ 4: Sử dụng try finally trong Java và nơi ngoại lệ xảy ra và được xử lý

Cũng tương tự ví dụ trên, nhưng lần này mình sẽ bắt đúng ngoại lệ.

public class TryCatchDemo {

public static void main(String[] args) {

try {

int data = 5 / 0;

} catch (ArithmeticException ex) {

System.out.println(ex);

} finally {

System.out.println(“Khối lệnh finally luôn được thực thi”);

System.out.println(“Finished!”);

Kết quả

java.lang.ArithmeticException: / by zero
Khối lệnh finally luôn được thực thi
Finished!

Nhìn vào ví dụ này, các bạn thấy đó, cho dù có bắt đúng ngoại lệ hay không thì khối finally cũng luôn được thực thi.
Đây là cách học lập trình mình luôn khuyến khích các bạn THỬ – SAI để hiểu rõ bản chất, các Java ứng xử với code của mình viết như thế nào.
Bằng cách này, nhiều học viên của mình đã rất tự tin khi review code cũng như trao đổi với cả các bạn làm lập trình lâu năm.

> Nếu bạn muốn phát triển sự nghiệp lập trình viên với ngôn ngữ Java nhanh hơn thì có thể tham gia KHÓA HỌC JAVA (6 tháng học offline thực chiến) này!

Cú pháp Try Catch

Cú pháp:

try {

//Những khối lệnh có thể phát sinh lỗi

} catch (Exception e) { //tham số e là tên lỗi muốn xử lý

//Chương trình thực hiện khi gặp lỗi trên

Ví dụ: khi gặp lỗi lấy phần tử trong mảng mà không tồn tại

Ta thấy chương trình sẽ throw lỗi là ArrayIndexOutOfBoundsException, ta sẽ catch lỗi đó như sau:


public static void main(String[] args) { // TODO Auto-generated method stub try { int[] a = {5,6,7}; System.out.println(a[4]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Index does not exist"); } }

Nếu bạn không thể lường trước toàn bộ lỗi, ta có thể đặt mặc định Exception để xử lý lỗi mà bạn chưa tính đến được.

Ví dụ: Tính tổng các tham số truyền vào trong phương thức main


public static void main(String[] args) { // TODO Auto-generated method stub int S=0; try { for (String arg : args) { S+= Integer.parseInt(arg); System.out.println(arg); } } catch (Exception e) { System.out.println("Error:"+e.toString()); } }

Ta dùng phương thức parseInt trong class Integer để chuyển giá trị kiểu String sang giá trị kiểu int (với điều kiện chuỗi đó mang ý nghĩa con số). Giả sử người dùng cho tham số truyền vào không phải kí tự số

Như vậy lỗi có tên là: java.lang.NumberFormatException

Java 27 . Cách bắt lỗi ngoại lệ bằng try catch trong lập trình Java | Phần 1 - Lập Trình Java Cơ Bản
Java 27 . Cách bắt lỗi ngoại lệ bằng try catch trong lập trình Java | Phần 1 – Lập Trình Java Cơ Bản

try…catch…finally trong Java

Trong Java, chúng ta cũng có thể sử dụng khối finally sau khối try…catch. Ví dụ,


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(); } }

Đầu ra


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

Trong ví dụ trên, chúng ta đã tạo một mảng có tên danh sách và một file có tên output.txt. Ở đây, chúng ta đang cố gắng đọc dữ liệu từ mảng và lưu trữ vào file.

Lưu ý code,


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

Ở đây, kích thước của mảng là 5 và phần tử cuối cùng của mảng là tại list[4]. Tuy nhiên, chúng tôi đang cố gắng truy cập các phần tử tại a[5] và a[6].

Do đó, code tạo ra một ngoại lệ bị khối bắt.

Vì khối finally luôn được thực thi, chúng ta đã bao gồm mã để đóng PrintWriter bên trong khối finally .

Một thực tiễn tốt là sử dụng khối finally để bao gồm code dọn dẹp quan trọng như đóng file hoặc kết nối.

Lưu ý : Có một số trường hợp khi một khối finally không thực thi:

  • Sử dụng phương thức System.exit()
  • Một ngoại lệ xảy ra trong khối finally

Khối lệnh try trong java

Khối lệnh try trong java được sử dụng để chứa một đoạn code có thế xảy ra một ngoại lệ. Nó phải được khai báo trong phương thức.

Sau một khối lệnh try bạn phải khai báo khối lệnh catch hoặc finally hoặc cả hai.

Cú pháp của khối lệnh try-catch trong java

try { // code có thể ném ra ngoại lệ } catch(Exception_class_Name ref) { // code xử lý ngoại lệ }

Cú pháp của khối lệnh try-finally trong java

try { // code có thể ném ra ngoại lệ } finally { // code trong khối này luôn được thực thi }

[Khóa học lập trình Java đến OOP] - Bài 27: Try catch trong Java | HowKteam
[Khóa học lập trình Java đến OOP] – Bài 27: Try catch trong Java | HowKteam

✅ Bắt lỗi ngoại lệ trong Java là gì?

Khi chạy chương trình, có rất nhiều loại lỗi khác nhau có thể xảy ra như: lỗi do sai lầm người viết, lỗi do sai thông tin đầu vào hoặc những lỗi mà không thể lường trước được. Và khi có lỗi, Java sẽ dừng lại và hiển thị thông tin lỗi ra, kĩ thuật đó thường được gọi là “throw an exception/error”.Ví dụ chương trình Java sẽ ném lỗi như sau:

Lỗi trên có thể nhấn Ctrl S mà nó dính chữ “s” vào trong giá trị tham số của hàm chẳng hạn 😆. Và có những lỗi xuất phát từ người dùng, thì lúc đó ta không thể cho họ xem thông tin lỗi như thế này được. Với những người không thành thạo về máy vi tính hoặc tiếng Anh thì họ nghĩ chương trình bạn viết bị lỗi mà không phải lỗi từ họ.Vì vậy, Try Catch có nhiệm vụ bắt (Catch) các lỗi mà thực tế có thể xảy ra để xử lý sao cho chương trình thân thiện với người dùng hơn.

Lồng khối try trong Java

Việc một khối try bên trong một khối try khác thì được gọi là các khối try được lồng vào nhau, hay là lồng các khối try trong Java.

Tại sao sử dụng các khối try lồng nhau trong Java

Đôi khi có một tình huống là một phần của một khối code có thể gây ra một lỗi và toàn bộ khối lại có thể gây ra lỗi khác. Trong các tình huống đó, Exception Handler phải được lồng vào nhau. Cú pháp:

…. try { lenh 1; lenh 2; try { lenh 1; lenh 2; } catch(Exception e) { } } catch(Exception e) { } ….

Ví dụ về các khối try lồng nhau trong Java

class Excep6{ public static void main(String args[]){ try{ try{ System.out.println(“Thuc hien phep chia”); int b =39/0; }catch(ArithmeticException e){System.out.println(e);} try{ int a[]=new int[5]; a[5]=4; }catch(ArrayIndexOutOfBoundsException e){System.out.println(e);} System.out.println(“Lenh khac”); }catch(Exception e){System.out.println(“Da xu ly”);} System.out.println(“Luong chuan..”); } }

Chương trình sẽ cho kết quả sau:

Thuc hien phep chia java.lang.ArithmeticException: / by zero java.lang.ArrayIndexOutOfBoundsException: 5 Lenh khac Luong chuan..

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng….miễn phí. Tải ngay ứng dụng trên Android và iOS.

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile…. mới nhất của chúng tôi.

Bài học Java phổ biến tại vietjack.com:

Nếu bạn phải thực hiện các tác vụ khác nhau mà ở đó có thể xảy ra các ngoại lệ khác nhau, hãy sử dụng đa khối lệnh catch trong java.

Hãy xem ví dụ sau về việc sử dụng nhiều khối lệnh catch trong java

public class TestMultipleCatchBlock { public static void main(String args[]) { try { int a[] = new int[5]; a[5] = 30 / 0; } catch (ArithmeticException e) { System.out.println(“task1 is completed”); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(“task 2 completed”); } catch (Exception e) { System.out.println(“common task completed”); } System.out.println(“rest of the code…”); } }

Output:

task1 is completed rest of the code…

Ví dụ:

public class TestMultipleCatchBlock1 { public static void main(String args[]) { try { int a[] = new int[5]; a[5] = 30 / 0; } catch (Exception e) { System.out.println(“common task completed”); } catch (ArithmeticException e) { System.out.println(“task1 is completed”); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(“task2 is completed”); } System.out.println(“rest of the code…”); } }

Output:

Compile-time error

Chương trình trên bị lỗi tại compile-time là vì khi có ngoại lệ xảy ra thì các khối lệnh catch (ArithmeticException e) và catch (ArrayIndexOutOfBoundsException e) không bao giờ được thực thi, do khối catch (Exception e) đã bắt tất cả các ngoại lệ rồi.

20. xử lý biệt lệ java -cách sử dụng try catch java,lập trình java 2023 dễ hiểu cho người mới
20. xử lý biệt lệ java -cách sử dụng try catch java,lập trình java 2023 dễ hiểu cho người mới

✅ Cách sử dụng Try Catch trong Java

🔆 Khi nào cần sử dụng try catch

Khi thực thi một đoạn code Java nào đó, các lỗi khác nhau có thể xảy ra như:

  • Lỗi do chính coder tạo ra
  • Lỗi cú pháp
  • Lỗi logic
  • … những điều mà chúng ta có thể không lường trước.

Ví dụ như:

  • Người dùng nhập dữ liệu không hợp lệ
  • Truy cập vượt quá chỉ số mảng
  • Chia một số cho 0
  • ……

Khi xảy ra lỗi, ngoại lệ, Java thông thường sẽ dừng thực thi chương trình và đưa ra một thông báo, hay nói cách khác là Java ném ra một exception – Ngoại lệ.

🔆 Xử lý ngoại lệ trong Java

Xử lý ngoại lệ (Exception Handling) trong java là một cơ chế xử lý các lỗi runtime để có thể duy trì luồng bình thường của ứng dụng.Quá trình xử lý exception được gọi là catch exception (bắt ngoại lệ), nếu Runtime System không xử lý được ngoại lệ thì chương trình sẽ kết thúc.Khối lệnh

try

trong java được sử dụng để chứa một đoạn code thực thi mà có thế trong quá trình thực thi nó sẽ xảy ra một ngoại lệ.Sau một khối lệnh

try

, bạn phải khai báo khối lệnh

catch

hoặc

finally

, hoặc cả hai.Khối

catch

trong java được sử dụng để xử lý nếu xảy ra Exception, nếu không thì nó bị bỏ qua.Khối

catch

phải được sử dụng ngay sau khối

try

. Bạn có thể sử dụng nhiều khối

catch

với nhưng chỉ có một khối

try

duy nhất.

🔆 Cú pháp của try catch trong Java


try { // code có thể ném ra ngoại lệ } catch(Exception_class_Name ex) { // code xử lý ngoại lệ }

🔆 Cú pháp của try finally trong Java


try { // code có thể ném ra ngoại lệ } finally { // code trong khối này luôn được thực thi }

🔆 Cú pháp của try catch finally trong Java


try { // code có thể ném ra ngoại lệ } catch(Exception_class_Name_1 ex) { // code xử lý ngoại lệ 1 } catch(Exception_class_Name_2 ex) { // code xử lý ngoại lệ 2 } catch(Exception_class_Name_n ex) { // code xử lý ngoại lệ n } finally { // code trong khối này luôn được thực thi }

✳️ Ví dụ về cách sử dụng try catch trong java

Ở phần này mình sẽ giới thiệu cho các bạn một số ví dụ để các bạn làm quen với try catch trong Java nhé.Tuy nhiên, đầu tiên, nếu chúng ta không sử dụng try catch, hãy thử chạy một đoạn code lỗi sau, xem trình biên dịch sẽ báo như thế nào nhé.


public class TryCatchDemo1 { public static void main(String[] args) { int data = 5 / 0; System.out.println("Phép chia cho 0"); } }

Và đây là kết quả:


Exception in thread "main" java.lang.ArithmeticException: / by zero at Bai17_TryCatch.TryCatchDemo1.main(TryCatchDemo1.java:5)

Trình biên dịch đã dừng lại ngay tại dòng


int data = 5 / 0và ném ra một ngoại lệ (exception) ở trong màn hình console.

Lúc này dòng


System.out.println("Phép chia cho 0");chưa được thực thi.

Sau đây chúng ta sử dụng try catch để xử lý ngoại lệ chia cho số 0 trên xem sao nhé.

🔆 Ví dụ 1: Sử dụng try catch trong Java (với chỉ một khối catch)


public class TryCatchDemo1 { public static void main(String[] args) { //Xử lý ngoại lệ bằng try catch trong Java try { int data = 5 / 0; } catch (ArithmeticException e) { //In ra màn hình tên ngoại lệ System.out.println(e); } System.out.println("Phép chia cho 0"); } }

Và đây là kết quả:


java.lang.ArithmeticException: / by zero Phép chia cho 0

Nếu như bình thường (giống ở ví dụ trên) thì lẽ ra chia một số cho số 0 thì chương trình Java sẽ gặp lỗi và dừng thực thi.=> Câu lệnh sau đó

System.out.println("Phép chia cho 0");

sẽ không bao giờ được thực thi.Nhưng ở đây, cho dù gặp lỗi chia cho số 0 nhưng câu lệnh sau đó vẫn được thực thi.Điều này chứng tỏ rằng, try catch đã làm việc thành công. Nó đã bắt được ngoại lệ và tiếp tục thực thi dòng chảy bình thường của chương trình.Tiếp theo, chúng ta có thể sử dụng nhiều khối lệnh catch như ví dụ sau:

🔆 Ví dụ 2: Sử dụng try catch trong Java (với nhiều khối catch)

Trước tiên, bạn hãy đọc qua ví dụ ở dưới đây và xem kết quả. Mình sẽ giải thích ví dụ này sau:


public class TryCatchDemo2 { public static void main(String[] args) { try { int arr[] = new int[5]; arr[6] = 4; System.out.println("arr[6 = " + arr[6]); int data = 0; int div = 10 / data; System.out.println("Average = " + div); String obj = null; System.out.println(obj.length()); } catch (NullPointerException ex) { System.out.println(ex); } catch (ArithmeticException ex) { System.out.println(ex); } catch (ArrayIndexOutOfBoundsException ex) { System.out.println(ex); } System.out.println("Finished!"); } }

Kết quả:


java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 5 Finished!

Ở ví dụ này, mình thử tạo một mảng với 5 phần tử.Mình biết rõ là Java không cho phép truy cập vào phần tử không tồn tại trong mảng. Nhưng mình vẫn làm để cho nó xảy ra lỗi (Sau đó sẽ bắt ngoại lệ

ArrayIndexOutOfBoundsException

)Tiếp theo nữa, mình cố gắng tạo ra một lỗi NullPointerException và một lỗi toán học (lỗi chia cho số 0)Sau đó mình ném tất cả code thực thi vào khối try.Ngay sau đó, mình lần lượt tạo ra các khối catch để bắt từng loại ngoại lệ mà mình nghĩ rằng trong quá trình thực thi sẽ xảy ra.Lưu ý: Khi bắt gặp một ngoại lệ, trình biên dịch Java sẽ ngay lập tức thực thi xử lý ngoại lệ tương ứng (do đó, nó thoát khỏi khối try và không tìm thấy 2 ngoại lệ khác mà mình đã cố tạo ra)

🔆 Ví dụ 3: Sử dụng try finally trong Java (ngoại lệ xảy ra nhưng không được xử lý)

Ở ví dụ này, mình thử bắt ngoại lệ với khối catch, nhưng mình sẽ bắt ngoại lệ không đúng.


public class TryCatchDemo3 { public static void main(String[] args) { try { int data = 5 / 0; } catch (NullPointerException ex) { System.out.println(ex); } finally { System.out.println("Khối lệnh finally luôn được thực thi"); } System.out.println("Finished!"); } }

Kết quả:


Khối lệnh finally luôn được thực thi Exception in thread "main" java.lang.ArithmeticException: / by zero at Bai17_TryCatch.TryCatchDemo3.main(TryCatchDemo3.java:6)

Và cũng ví dụ này, nhưng mình thử không sử dụng khối catch:


public class TryCatchDemo3 { public static void main(String[] args) { try { int data = 5 / 0; } finally { System.out.println("Khối lệnh finally luôn được thực thi"); } System.out.println("Finished!"); } }

Bạn thử chạy chương trình trên xem kết quả như thế nào?

Như phần đầu đã trình bày thì khối


finallyluôn luôn được thực hiện dù có xảy ra ngoại lệ hay không.

Trong ví dụ trên, ngoại lệ có xảy ra nhưng mình cố tình bắt sai mã ngoại lệ, đúng ra phải là

ArithmeticException

chứ không phải là

NullPointerException

.Do đó ngoại lệ vẫn xảy ra vì chưa bắt đúng, nhưng dòng

System.out.println("Khối lệnh finally luôn được thực thi");

vẫn được thực thi và in ra màn hình, trong khi chương trình đã stop, không thực thi câu lệnh

System.out.println("Finished!");

🔆 Ví dụ 4: Sử dụng try finally trong Java và nơi ngoại lệ xảy ra và được xử lý

Cũng tương tự ví dụ trên, nhưng lần này mình sẽ bắt đúng ngoại lệ.


public class TryCatchDemo4 { public static void main(String[] args) { try { int data = 5 / 0; } catch (ArithmeticException ex) { System.out.println(ex); } finally { System.out.println("Khối lệnh finally luôn được thực thi"); } System.out.println("Finished!"); } }

Kết quả:


java.lang.ArithmeticException: / by zero Khối lệnh finally luôn được thực thi Finished!

Nhìn vào ví dụ này, các bạn thấy đó, cho dù có bắt đúng ngoại lệ hay không thì khối finally cũng luôn được thực thi.

Từ khóa finally

Từ khóa finally có ý nghĩa sẽ chạy những dòng code sau khi kết thúc try catch bất kì có lỗi hay không.

Ví dụ:


public static void main(String[] args) { // TODO Auto-generated method stub int S=0; try { for (String arg : args) { S+= Integer.parseInt(arg); System.out.println(arg); } } catch (Exception e) { System.out.println("Error:"+e.toString()); } finally { System.out.println("This is end"); } }

Xử Lý Lỗi Ngoại Lệ trong Java với try-catch dễ như ăn kẹo! | Code Thu
Xử Lý Lỗi Ngoại Lệ trong Java với try-catch dễ như ăn kẹo! | Code Thu

Vấn đề không có ngoại lệ xử lý

public class TestTryCatch1 { public static void main(String args[]) { int data = 50 / 0; // ném ra ngoại lê ở đây System.out.println(“rest of the code…”); } }

Output:

Exception in thread “main” java.lang.ArithmeticException: / by zero at vn.tpv.exception1.TestTryCatch1.main(TestTryCatch1.java:5)

Trong ví dụ trên, phần còn lại của code không được thực thi (dòng chữ “rest of the code…” không được in ra màn hình). Tất cả các lệnh không được thực thi sau khi xảy ra ngoại lệ.

Chúng ta cũng có thể sử dụng khối try cùng với một khối finally.

Trong trường hợp này, khối finally luôn được thực thi cho dù có ngoại lệ bên trong khối try catch hay không.

Ví dụ: Java try … finally block


class Main { public static void main(String[] args) { try { int divideByZero = 5 / 0; } finally { System.out.println("Finally block is always executed"); } } }

Đầu ra


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

Trong ví dụ trên, chúng ta đã sử dụng khối try cùng với khối finally. Chúng ta có thể thấy rằng mã bên trong khối try đang gây ra một ngoại lệ.

Tuy nhiên, mã bên trong khối finally được thực thi bất kể ngoại lệ.

JAVA 48 - TRY CATCH TRONG JAVA PHẦN 1
JAVA 48 – TRY CATCH TRONG JAVA PHẦN 1

Vấn đề khi không có Exception Handling

Chúng ta cùng tìm hiểu vấn đề nếu không sử dụng khối try-catch.

public class Testtrycatch1{ public static void main(String args[]){ int data=50/0;//co the nem exception System.out.println(“Phan code con lai…”); } }

Chương trình sẽ cho kết quả sau:

Exception in thread “main” java.lang.ArithmeticException: / by zero

Như trong ví dụ trên, phần còn lại của code không được thực thi (trong ví dụ này là lệnh in Phan code con lai… không được in). Giả sử nếu có khoảng 100 dòng code sau exception, thì tất cả các dòng code này sẽ không được thực thi.

Khi nào cần sử dụng try catch trong Java

Khi thực thi một đoạn code Java nào đó, các lỗi khác nhau có thể xảy ra như:

  • Lỗi do chính coder tạo ra
  • Lỗi cú pháp
  • Lỗi logic
  • … những điều mà chúng ta có thể không lường trước.

Ví dụ như:

  • Người dùng nhập dữ liệu không hợp lệ
  • Truy cập vượt quá chỉ số mảng
  • Chia một số cho 0
  • ……

Khi xảy ra lỗi, ngoại lệ, Java thông thường sẽ dừng thực thi chương trình và đưa ra một thông báo, hay nói cách khác là Java ném ra một exception – Ngoại lệ.
Xử lý ngoại lệ (Exception Handling) trong java là một cơ chế xử lý các lỗi runtime để có thể duy trì luồng bình thường của ứng dụng.
Quá trình xử lý exception được gọi là catch exception (bắt ngoại lệ), nếu Runtime System không xử lý được ngoại lệ thì chương trình sẽ kết thúc.
Khối lệnh

try

trong java được sử dụng để chứa một đoạn code thực thi mà có thế trong quá trình thực thi nó sẽ xảy ra một ngoại lệ.
Sau một khối lệnh

try

, bạn phải khai báo khối lệnh

catch

hoặc

finally

, hoặc cả hai.
Khối

catch

trong java được sử dụng để xử lý nếu xảy ra Exception, nếu không thì nó bị bỏ qua.
Khối

catch

phải được sử dụng ngay sau khối

try

. Bạn có thể sử dụng nhiều khối

catch

với nhưng chỉ có một khối

try

duy nhất.

Cú pháp của try catch trong Java:

try {

// code có thể ném ra ngoại lệ

} catch(Exception_class_Name ex) {

// code xử lý ngoại lệ

Cú pháp của try finally trong Java

try {

// code có thể ném ra ngoại lệ

} finally {

// code trong khối này luôn được thực thi

Cú pháp của try catch finally trong Java

try {

// code có thể ném ra ngoại lệ

} catch(Exception_class_Name_1 ex) {

// code xử lý ngoại lệ 1

} catch(Exception_class_Name_2 ex) {

// code xử lý ngoại lệ 2

} catch(Exception_class_Name_n ex) {

// code xử lý ngoại lệ n

} finally {

// code trong khối này luôn được thực thi

2 kiểu ngoại lệ trong Java

Có 2 kiểu ngoại lệ trong Java:

  • Checked Exceptions: Các ngoại lệ này thường là bị buộc phải bắt hoặc khai báo. Nếu quy tắc này không được tuân theo thì trình biên dịch sẽ không thực thi chương trình.
  • Unchecked Exceptions: Ngoại lệ này thường là do viết code sai, truyền đối null hoặc tham số không chính xác…

Các ngoại lệ kiểu Checked Exceptions phổ biến:

  • IOException: Ngoại lệ liên quan đến file input / output
  • SQLException: Ngoại lệ liên quan đến cú pháp SQL
  • DataAccessException: Ngoại lệ liên quan đến việc truy cập CSDL
  • ClassNotFoundException: Bị ném khi JVM không thể tìm thấy một lớp mà nó cần, do lỗi dòng lệnh, sự cố đường dẫn hoặc tệp, class bị thiếu…
  • InstantiationException: Ngoại lệ khi cố gắng tạo đối tượng của một abstract class hoặc interface

Các ngoại lệ kiểu Unchecked Exceptions phổ biến:

  • NullPointerException: Ngoại lệ bị ném ra khi cố gắng truy cập một đối tượng có biến tham chiếu có giá trị hiện tại là null
  • ArrayIndexOutOfBound: Ngoại lệ khi cố gắng truy cập một phần tử vượt quá độ dài của mảng
  • IllegalArgumentException: Ngoại lệ bị ném ra khi một phương thức nhận được một đối số được định dạng khác với phương thức mong đợi.
  • IllegalStateException: Ngoại lệ bị ném ra khi trạng thái của môi trường không phù hợp với hoạt động cố gắng thực hiện, ví dụ: Sử dụng Scanner đã bị đóng.
  • NumberFormatException: Ngoại lệ bị ném khi một phương thức chuyển đổi một Chuỗi thành số nhưng không thể chuyển đổi.
  • ArithmeticException: Lỗi số học, chẳng hạn như chia cho 0.

Trên đây là cú pháp sử dụng try catch, và các ngoại lệ phổ biến. Còn sử dụng cụ thể như thế nào thì mời bạn sang tiếp phần tiếp theo.

Nghệ Thuật Throw và Throws Trong Java - Bạn đã biết chưa? | Code Thu
Nghệ Thuật Throw và Throws Trong Java – Bạn đã biết chưa? | Code Thu

Từ khóa throw

Từ khóa throw mục đích chính là để ném lỗi, thường khi bạn viết các phương thức cho người khác người dùng và bắt người khác phải tự xử lý những trường hợp đó. Bản chất các Exception là các class, nên khi ném lỗi có nghĩa là: Bạn khởi tạo đối tượng Exception và throw cho người viết sau này phải catch lại:

Ví dụ: Throw lỗi nếu người dùng nhập tham số lớn hơn 100, ta sử dụng class ArithmeticException để xử lý:


public class HelloWorld { static void inputValue(int value) { if (value>100) { throw new ArithmeticException("Value>100"); } } public static void main(String[] args) { // TODO Auto-generated method stub inputValue(102); } }

Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Khóa học

Lập trình Java cơ bản đến hướng đối tượng

Với mục đích giới thiệu đến mọi người về Ngôn ngữ Java – một ngôn ngữ lập trình khá mới mẻ so với C, C++, Java, PHP ở Việt Nam.

Thông qua khóa học LẬP TRÌNH JAVA CƠ BẢN ĐẾN HƯỚNG ĐỐI TƯỢNG, Kteam sẽ hướng dẫn các bạn kiến thức cơ bản của Java. Để từ đó, có được nền tảng cho phép bạn tiếp tục tìm hiểu những kiến thức tuyệt vời khác của Java hoặc là một ngôn ngữ khác.

Cụ thể trong khóa học này, Kteam sẽ giới thiệu với các bạn Java ở phiên bản Java 8

Đánh giá

Siêu dễ hiểu và ngắn gọn chứ k lan man ! Công nhận bài học rất hay, bổ ích !

Đăng nhập/Đăng ký
Danh sách bài
Giới thiệu về Java
Hello World
JDK, JRE & JVM
Làm quen với Java
Biến & hằng
Toán tử
Biểu thức & câu lệnh
Kiểu dữ liệu
Chuỗi ký tự
Nhập xuất
Chú thích
Luồng điều khiển trong Java
Switch
If…else
Đệ quy
Hướng đối tượng trong Java
Lớp & đối tượng
Chỉ định truy cập
Phương thức
Hàm tạo
Nạp chồng
Kế thừa
Instanceof
Final
Con trỏ this
Ghi đè
Từ khóa super
Tính trừu tượng
Interface
Lớp Singleton
Enum
Reflection
Đa hình
Đóng gói
Lớp lồng nhau
Lớp ẩn danh
Xử lý ngoại lệ trong Java
Ngoại lệ
Try Catch
Xử lý nhiều ngoại lệ
Try-with-resources
Annotation
Các kiểu Annotation
Throw & Throws
Ghi log
Assertion
Các lớp nâng cao trong Java
Collection Interface
Arraylist
Queue Interface
PriorityQueue
Deque Interface
LinkedList
ArrayDeque
BlockingQueue Interface
ArrayBlockingQueue
LinkedBlockingQueue
Map Interface
Hashmap
LinkedHashmap
Stack
Vector
Framework Collection
WeakHashMap
EnumMap
SortedMap Interface
NavigableMap Interface
TreeMap
ConcurrentMap Interface
ConcurrentHashMap
Set Interface
Hashset
EnumSet
LinkedHashSet
NavigableSet Interface
SortedSet Interface
TreeSet
Phương thức có sẵn
Iterator Interface
ListIterator Interface
Luồng nhập xuất trong Java (Đọc file và ghi file)
Luồng nhập xuất
InputStream
OutputStream
FileInputStream
FileOutputStream
ByteArrayInputStream
ByteArrayOutputStream
ObjectInputStream
ObjectOutputStream
BufferedInputStream
BufferedOutputStream
PrintStream
Reader & Writer
InputStreamReader & OutputStreamWriter
FileReader & FileWriter
BufferedReader & BufferedWriter
StringReader & StringWriter
PrintWriter
Scanner
Kiến thức bổ sung
Ép kiểu
Autoboxing & Unboxing
Biểu thức Lambda
Tính tổng quát
File
Wrapper
Tham số trên CommandLine
Tutorial
Java Tutorial
Trang trước
Trang tiếp theo
Bạn cần
đăng nhập
để bình luận bài viết này
Chưa có bình luận nào, hãy là người đầu tiên bình luận
Chia sẻ kiến thức – Kết nối tương lai
Về chúng tôi
Về chúng tôi
Giới thiệu
Chính sách bảo mật
Điều khoản dịch vụ
Học miễn phí
Học miễn phí
Khóa học
Luyện tập
Cộng đồng
Cộng đồng
Kiến thức
Tin tức
Hỏi đáp
CÔNG TY CỔ PHẦN CÔNG NGHỆ GIÁO DỤC VÀ DỊCH VỤ BRONTOBYTE
The Manor Central Park, đường Nguyễn Xiển, phường Đại Kim, quận Hoàng Mai, TP. Hà Nội
THÔNG TIN LIÊN HỆ
[email protected]
©2024 TEK4.VN
Copyright © 2024
TEK4.VN

Java Try-catch exception – Khối Try-catch trong Java

Khối

try-catch

được sử dụng để thi hành mô hình

catch



throw

của việc xử lý ngoại lệ. Khối

try

chứa một bộ các lệnh có thể thi hành được. Các ngoại lệ có thể bị chặn khi thi hành những câu lệnh này. Phương thức dùng để chặn ngoại lệ có thể được khai báo trong khối

try

. Một hay nhiều khối

catch

có thể theo sau khối

try

. Các khối catch này bắt các ngoại lệ bị chặn trong khối

try

.

Cú pháp:


try { // Block of code to try } catch(Exception e) { // Block of code to handle errors }

Ví dụ:

– Chương trình thông thường không sử dụng try-catch:


public class MyClass { public static void main(String[] args) { int[] myNumbers = { 1, 2, 3 }; System.out.println(myNumbers[10]); // error! } }

Kết quả lỗi:


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10 at MyClass.main(MyClass.java:4)

– Chương trình sử dụng try-catch:


public class MyClass { public static void main(String[] args) { try { int[] myNumbers = { 1, 2, 3 }; System.out.println(myNumbers[10]); } catch (Exception e) { System.out.println("Something went wrong."); } } }

Kết quả:


Something went wrong.

NỘI DUNG BÀI HỌC

✳️ Cách sử dụng Try Catch trong Java

✳️ Các loại Exception trong Java

Lập trình Java - Dùng try - catch bắt lỗi
Lập trình Java – Dùng try – catch bắt lỗi

Nhiều khối Catch

Đối với mỗi khối try, có thể có không hoặc nhiều khối catch. Nhiều khối catch cho phép chúng ta xử lý từng ngoại lệ khác nhau.

Loại đối số của mỗi khối catch cho biết loại ngoại lệ có thể được xử lý bởi nó. Ví dụ,


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(); } }

Đầu ra


IndexOutOfBoundsException => Index 10 out of bounds for length 10

Trong ví dụ này, chúng ta đã tạo một mảng số nguyên có tên là arr kích thước 10 .

Vì chỉ số mảng bắt đầu từ 0 nên phần tử cuối cùng của mảng là tại arr[9]. Lưu ý câu lệnh,


arr[10] = 11;

Ở đây, chúng ta đang cố gắng gán một giá trị cho chỉ mục 10 . Do đó, IndexOutOfBoundException xảy ra.

Khi một ngoại lệ xảy ra trong khối try,

  • Ngoại lệ được ném vào khối catch đầu tiên . Khối catch đầu tiên không xử lý một IndexOutOfBoundsException, vì vậy nó được chuyển sang khối catch tiếp theo .
  • Khối thứ hai catch trong ví dụ trên là trình xử lý ngoại lệ thích hợp vì nó xử lý một IndexOutOfBoundsException. Do đó, nó được thực thi.

Xử lý vấn đề trên bởi Exception Handling trong Java

Bây giờ, cùng ví dụ trên, chúng ta sử dụng khối try-catch để xử lý vấn đề trên.

public class Testtrycatch2{ public static void main(String args[]){ try{ int data=50/0; }catch(ArithmeticException e){System.out.println(e);} System.out.println(“Phan code con lai…”); } }

Chương trình sẽ cho kết quả sau:

java.lang.ArithmeticException: / by zero Phan code con lai…

Lúc này, phần còn lại của code đã được thực thi.

Chế độ làm việc nội tại của khối try-catch trong Java

Đầu tiên, JVM kiểm tra xem exception đã được xử lý hay chưa. Nếu exception chưa được xử lý, JVM cung cấp một Exception Handler mặc định, để thực hiện các tác vụ sau:

  • In ra miêu tả của exception đó.

  • In ra stack trace (cấu trúc thứ bậc của phương thức nơi mà exception xuất hiện).

  • Làm cho chương trình ngừng lại.

Nhưng nếu exception đã được xử lý bởi Lập trình viên, thì luồng chuẩn của ứng dụng được duy trì (hay là phần còn lại của code được thực thi).

Mình Đã Tạo Exception Java, Và Bạn Cũng Có Thể Làm Được! | Code Thu
Mình Đã Tạo Exception Java, Và Bạn Cũng Có Thể Làm Được! | Code Thu

Try Catch là gì?

Khi chạy chương trình, có rất nhiều loại lỗi khác nhau có thể xảy ra như: lỗi do sai lầm người viết, lỗi do sai thông tin đầu vào hoặc những lỗi mà không thể lường trước được. Và khi có lỗi, Java sẽ dừng lại và hiện thị thông tin lỗi ra, kĩ thuật đó thường được gọi là ‘throw an exception/error’.

Chương trình Java sẽ ném lỗi như sau:

Và có những lỗi xuất phát từ người dùng, thì lúc đó ta không thể cho họ xem thông tin lỗi như thế này được. Với những người không thành thạo về máy vi tính hoặc tiếng Anh thì họ nghĩ chương trình bạn viết bị lỗi mà không phải lỗi từ họ.

Vì vậy, Try Catch có nhiệm vụ bắt (Catch) các lỗi mà thực tế có thể xảy ra để xử lý sao cho chương trình thân thiện với người dùng hơn.

Chúc mừng, bạn đã hiểu rõ hơn về try catch trong Java

Như vậy chúng ta đã vừa tìm hiểu xong cách sử dụng try catch trong Java để xử lý các ngoại lệ phát sinh trong khi lập trình.

Cũng đơn giản thôi phải không nhỉ?
Nếu bạn sử dụng IDE thông minh như Eclipse thì nó còn có chức năng thông báo để bạn biết rằng khi nào bạn cẩn phải xử lý ngoại lệ.
Thậm chí chỉ cần click là có thể tự động tạo ra mã xử lý ngoại lệ, rất thuận tiện. Thế nên, nếu bạn đang học lập trình Java hãy chọn ngay một IDE và sử dụng nó.

HỌC VIỆN ĐÀO TẠO CNTT NIIT – ICT HÀ NỘI

Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!

Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội

SĐT: 02435574074 – 0383.180086

Email: [email protected]

Fanpage: https://facebook.com/NIIT.ICT/

#niit #icthanoi #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #python #java #php

Nội dung chính

Java Cơ Bản 67 throw/throws ra một exceptions theo ý muốn
Java Cơ Bản 67 throw/throws ra một exceptions theo ý muốn

Giải quyết bằng xử lý ngoại lệ

public class TestTryCatch2 { public static void main(String args[]) { try { int data = 50 / 0; } catch (ArithmeticException e) { System.out.println(e); } System.out.println(“rest of the code…”); } }

Output:

java.lang.ArithmeticException: / by zero rest of the code…

Trong ví dụ này, phần còn lại của code được thực thi nghĩa là dòng chữ “rest of the code…” được in ra màn hình.

Try catch trong Java

Nội dung

Để đọc hiểu bài này, tốt nhất các bạn nên có kiến thức cơ bản về các phần sau:

  • CÁC BIẾN TRONG JAVA.
  • CÁC KIỂU DỮ LIỆU TRONG JAVA.
  • CÁC HẠNG TOÁN TỬ TRONG JAVA
  • CẤU TRÚC RẼ NHÁNH TRONG JAVA
  • VÒNG LẶP WHILE TRONG JAVA
  • VÒNG LẶP FOR TRONG JAVA
  • MẢNG TRONG JAVA
  • VÒNG LẶP FOR-EACH TRONG JAVA
  • VAI TRÒ BREAK, CONTINUE TRONG VÒNG LẶP JAVA
  • SWITCH TRONG JAVA
  • LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  • CLASS TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  • CÁC LOẠI PHẠM VI TRUY CẬP TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  • TỪ KHÓA STATIC TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  • TỪ KHÓA THIS TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  • THỪA KẾ TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  • SETTER & GETTER TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  • OVERRIDING VÀ OVERLOADING TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  • TÍNH TRỪU TƯỢNG TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  • INTERFACE TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  • PHƯƠNG THỨC MAIN TRONG JAVA

Bài này chúng ta sẽ tìm hiểu những vấn đề sau:

  • Try Catch là gì?
  • Cú pháp Try Catch
  • Từ khóa finally
  • Từ khóa throw
[Baemin Daily] GIAO HÀNG TRONG PHỐ '' Nhật - Hàn '' VÀ CÁI KẾT | Anh Tài Xế | Cr
[Baemin Daily] GIAO HÀNG TRONG PHỐ ” Nhật – Hàn ” VÀ CÁI KẾT | Anh Tài Xế | Cr

Câu lệnh thử tài nguyên trong Java

Câu lệnh try-with-resources là câu lệnh try có một hoặc nhiều khai báo tài nguyên.

Cú pháp của nó là:


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

Tài nguyên là một đối tượng được đóng ở cuối chương trình. Nó phải được khai báo và khởi tạo trong câu lệnh try.

Hãy lấy một ví dụ.


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

Câu lệnh try-with-resources còn được gọi là quản lý tài nguyên tự động . Câu lệnh này tự động đóng tất cả các tài nguyên ở cuối câu lệnh.

Để tìm hiểu thêm, hãy truy cập câu lệnh java try-with-resources trong bài tiếp.

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

  • Full series tự học Java từ cơ bản tới nâng cao tại đây nha.
  • Ebook về Java tại đây.
  • Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây

Khối try-catch trong Java

✅ Các loại Exception trong Java

Có 2 kiểu ngoại lệ trong Java:

  • Checked Exceptions: Các ngoại lệ này thường là bị buộc phải bắt hoặc khai báo. Nếu quy tắc này không được tuân theo thì trình biên dịch sẽ không thực thi chương trình.
  • Unchecked Exceptions: Ngoại lệ này thường là do viết code sai, truyền đối null hoặc tham số không chính xác…

🔆 Các ngoại lệ kiểu Checked Exceptions phổ biến:

  • IOException: Ngoại lệ liên quan đến file input / output
  • SQLException: Ngoại lệ liên quan đến cú pháp SQL
  • DataAccessException: Ngoại lệ liên quan đến việc truy cập CSDL
  • ClassNotFoundException: Bị ném khi JVM không thể tìm thấy một lớp mà nó cần, do lỗi dòng lệnh, sự cố đường dẫn hoặc tệp, class bị thiếu…
  • InstantiationException: Ngoại lệ khi cố gắng tạo đối tượng của một abstract class hoặc interface

🔆 Các ngoại lệ kiểu Unchecked Exceptions phổ biến

  • NullPointerException: Ngoại lệ bị ném ra khi cố gắng truy cập một đối tượng có biến tham chiếu có giá trị hiện tại là null
  • ArrayIndexOutOfBound: Ngoại lệ khi cố gắng truy cập một phần tử vượt quá độ dài của mảng
  • IllegalArgumentException: Ngoại lệ bị ném ra khi một phương thức nhận được một đối số được định dạng khác với phương thức mong đợi.
  • IllegalStateException: Ngoại lệ bị ném ra khi trạng thái của môi trường không phù hợp với hoạt động cố gắng thực hiện, ví dụ: Sử dụng Scanner đã bị đóng.
  • NumberFormatException: Ngoại lệ bị ném khi một phương thức chuyển đổi một Chuỗi thành số nhưng không thể chuyển đổi.
  • ArithmeticException: Lỗi số học, chẳng hạn như chia cho 0.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về câu lệnh try catch trong Java với sự trợ giúp của các ví dụ.

Các khối try…catch trong Java được sử dụng để xử lý trường hợp ngoại lệ và ngăn ngừa việc chấm dứt bất thường của chương trình.

Đây là cú pháp của một khối try…catch trong Java.


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

Khối try bao gồm code mà có thể tạo ra một ngoại lệ.

Khối catch bao gồm code được thực hiện khi có xảy ra một ngoại lệ bên trong khối try.

Ví dụ: khối try … catch trong Java


/* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam @author cafedevn Contact: [email protected] Fanpage: https://www.facebook.com/cafedevn Group: https://www.facebook.com/groups/cafedev.vn/ Instagram: https://instagram.com/cafedevn Twitter: https://twitter.com/CafedeVn Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/ Pinterest: https://www.pinterest.com/cafedevvn/ YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/ */ 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()); } } }

Đầu ra


ArithmeticException => / by zero

Trong ví dụ trên, lưu ý dòng,


int divideByZero = 5 / 0;

Ở đây, chúng tôi đang cố gắng chia một số cho không . Trong trường hợp này, một ngoại lệ xảy ra. Do đó, chúng tôi đã đặt mã này bên trong khối try.

Khi chương trình gặp mã này, ArithmeticException xảy ra. Và, ngoại lệ được khối catch bắt và thực thi mã bên trong khối catch.

Các khối catch được chỉ thực hiện nếu có tồn tại một ngoại lệ bên trong khối try.

Lưu ý : Trong Java, chúng ta có thể sử dụng một khối try mà không cần một khối catch. Tuy nhiên, chúng ta không thể sử dụng khối catch mà không có khối try.

Khối try…finally trong Java

Nội dung chính

[FULL] Khóa Học Java Cơ Bản Từ A tới Z cho Beginner | Học Java Từ Số 0 với Hỏi Dân IT
[FULL] Khóa Học Java Cơ Bản Từ A tới Z cho Beginner | Học Java Từ Số 0 với Hỏi Dân IT

Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Try catch trong Java dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Bắt nhiều ngoại lệ

Từ Java SE 7 trở lên, giờ đây chúng ta có thể bắt gặp nhiều loại ngoại lệ với một khối catch.

Điều này làm giảm sự trùng lặp mã và tăng tính đơn giản và hiệu quả của mã.

Mỗi loại ngoại lệ có thể được xử lý bởi khối catch được phân tách bằng thanh dọc |.

Cú pháp của nó là:


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

Để tìm hiểu thêm, hãy truy cập Java để bắt nhiều ngoại lệ trong bài tiếp .

ASYNC JavaScript trong 30 phút (CALLBACK, PROMISES, ASYNC AWAIT)
ASYNC JavaScript trong 30 phút (CALLBACK, PROMISES, ASYNC AWAIT)

Nhiều khối catch trong Java

Nếu bạn phải thực hiện các tác vụ khác nhau mà có thể xảy ra các exception khác nhau, bạn sử dụng nhiều khối catch trong Java. Bạn theo dõi ví dụ đơn giản sau:

public class TestMultiCatchBlock{ public static void main(String args[]){ try{ int a[]=new int[5]; a[5]=30/0; } catch(ArithmeticException e){System.out.println(“Task1 duoc hoan thanh”);} catch(ArrayIndexOutOfBoundsException e){System.out.println(“Task2 duoc hoan thanh”);} catch(Exception e){System.out.println(“Task chung duoc hoan thanh”);} System.out.println(“Phan code con lai…”); } }

Chương trình sẽ cho kết quả sau:

Task1 duoc hoan thanh Phan code con lai…

Qui tắc 1: Tại một thời điểm, chỉ một exception được xuất hiện và tại một thời điểm chỉ có một khối catch được thực thi.

Qui tắc 2: Tất cả khối catch phải được sắp xếp từ cụ thể nhất tới chung nhất, ví dụ: việc bắt ArithimeticExption phải ở trước việc bắt Exception.

class TestMultipleCatchBlock1{ public static void main(String args[]){ try{ int a[]=new int[5]; a[5]=30/0; } catch(Exception e){System.out.println(“Task chung duoc hoan thanh”);} catch(ArithmeticException e){System.out.println(“Task1 duoc hoan thanh”);} catch(ArrayIndexOutOfBoundsException e){System.out.println(“Task2 duoc hoan thanh”);} System.out.println(“Phan code con lai…”); } }

Chạy chương trình trên sẽ cho một lỗi compile time error.

Đã bao giờ bạn thắc mắc làm thế nào để một đoạn code Java bị lỗi nhưng vẫn có thể chạy được chưa?
Trong bài hướng dẫn này, chúng ta sẽ tìm hiểu về cách sử dụng try catch trong Java để giúp bạn xử lý ngoại lệ, giữ dòng chạy ứng dụng được xuyên suốt.

Try Catch trong Java

Nội dung của bài viết này gồm:

  • Khi nào cần sử dụng try catch
  • Ví dụ cách sử dụng try catch trong Java
  • Cách sử dụng try-catch kết hợp finally trong Java

Keywords searched by users: try catch trong java

Java 48 - Try Catch Trong Java Phần 1 - Youtube
Java 48 – Try Catch Trong Java Phần 1 – Youtube
Cách Sử Dụng Try Catch Trong Java Xử Lý Tất Cả Ngoại Lệ
Cách Sử Dụng Try Catch Trong Java Xử Lý Tất Cả Ngoại Lệ
Toàn Tập Về Xử Lý Ngoại Lệ Exception, Trycatch Trong Java – Itphutran.Com
Toàn Tập Về Xử Lý Ngoại Lệ Exception, Trycatch Trong Java – Itphutran.Com
Xử Lý Ngoại Lệ Trong Java - Học Java Miễn Phí Hay Nhất - Viettuts
Xử Lý Ngoại Lệ Trong Java – Học Java Miễn Phí Hay Nhất – Viettuts
Xử Lý Ngoại Lệ Trong Java (Exception Handling) - Gp Coder (Lập Trình Java)
Xử Lý Ngoại Lệ Trong Java (Exception Handling) – Gp Coder (Lập Trình Java)
Xử Lý Ngoại Lệ Với Từng Lại Ngoại Lệ Try Catch - Học Java
Xử Lý Ngoại Lệ Với Từng Lại Ngoại Lệ Try Catch – Học Java
Khối Lệnh Finally Trong Java - Học Java Miễn Phí Hay Nhất - Viettuts
Khối Lệnh Finally Trong Java – Học Java Miễn Phí Hay Nhất – Viettuts
Xử Lý Ngoại Lệ Trong Java - Học Java Miễn Phí Hay Nhất - Viettuts
Xử Lý Ngoại Lệ Trong Java – Học Java Miễn Phí Hay Nhất – Viettuts
Toàn Tập Về Xử Lý Ngoại Lệ Exception, Trycatch Trong Java – Itphutran.Com
Toàn Tập Về Xử Lý Ngoại Lệ Exception, Trycatch Trong Java – Itphutran.Com
Java For Tester] Bài 17 - Cách Bắt Lỗi Ngoại Lệ Bằng Try Catch Và Exception  | Anh Tester
Java For Tester] Bài 17 – Cách Bắt Lỗi Ngoại Lệ Bằng Try Catch Và Exception | Anh Tester
Lập Trình Java - Dùng Try - Catch Bắt Lỗi - Youtube
Lập Trình Java – Dùng Try – Catch Bắt Lỗi – Youtube
Xử Lý Ngoại Lệ Trong Java (Exception Handling) - Gp Coder (Lập Trình Java)
Xử Lý Ngoại Lệ Trong Java (Exception Handling) – Gp Coder (Lập Trình Java)
Try Catch In Java - Exception Handling
Try Catch In Java – Exception Handling
Toàn Tập Về Xử Lý Ngoại Lệ Exception, Trycatch Trong Java – Itphutran.Com
Toàn Tập Về Xử Lý Ngoại Lệ Exception, Trycatch Trong Java – Itphutran.Com
Try - Catch: Xử Lý Lỗi Trong Javascript
Try – Catch: Xử Lý Lỗi Trong Javascript
What Is Kotlin Try Catch? A Complete Guide | Simplilearn
What Is Kotlin Try Catch? A Complete Guide | Simplilearn
Xử Lý Exception Đúng Cách Trong Java
Xử Lý Exception Đúng Cách Trong Java
Java Try-Catch - Javatpoint
Java Try-Catch – Javatpoint
Exception Handling Với Overriding Phương Thức Trong Java - Học Java Miễn  Phí Hay Nhất - Viettuts
Exception Handling Với Overriding Phương Thức Trong Java – Học Java Miễn Phí Hay Nhất – Viettuts
Try Catch Trong Java | How Kteam
Try Catch Trong Java | How Kteam
Bài 9: Sử Dụng Try, Catch, Finally Trong Java Để Bắt Lỗi -  Www.Androidcoban.Com
Bài 9: Sử Dụng Try, Catch, Finally Trong Java Để Bắt Lỗi – Www.Androidcoban.Com
Exception Là Gì? Cách Xử Lý Lỗi Và Ngoại Lệ Trong Java
Exception Là Gì? Cách Xử Lý Lỗi Và Ngoại Lệ Trong Java
Xử Lý Exception Đúng Cách Trong Java
Xử Lý Exception Đúng Cách Trong Java
Bài Viết Về Ngoại Lệ Và Xử Lý Ngoại Lệ Trong Java
Bài Viết Về Ngoại Lệ Và Xử Lý Ngoại Lệ Trong Java
Java Exceptions - Ngoại Lệ Trong Java | Java | Laptrinh.Vn
Java Exceptions – Ngoại Lệ Trong Java | Java | Laptrinh.Vn

See more here: kientrucannam.vn

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *