× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Exception trong Java - Tìm hiểu ví dụ của ngoại lệ trong Java

12/04/2021 02:12

Khi bạn tạo và xây dựng chương trình, các lỗi sẽ xảy ra một cách tự nhiên. Đôi khi bạn viết sai lỗi chính ta tên biến hoặc từ khóa, hoặc đôi sự các sự cố về mạng diễn ra,... Những lỗi này rất phổ biến và dễ xử lý, chúng thường gọi là Exception hay ngoại lệ. Để xử lý ngoại lệ này, Java cung cấp nhiều cách để bắt và ngăn chặn chúng.

 

 

Ngoại lệ cũng bao gồm một số tình huống bất ngờ mà lập trình viên có thể gặp phải trong khi lập trình. Trong bài viết này, chúng ta sẽ thảo luận về ngoại lệ, Exception trong Java cũng với nguyên nhân gây ra ngoại lệ, các loại ngoại lệ trong Java.

Exception trong Java

Exception trong Java

Exception trong Java là gì?

Nhìn chung, exception trong Java đề cập đến một số mâu thuẫn hoặc tình huống bất ngờ, ngắn gọn là lỗi không mong  muốn xảy ra trong quá trình thực thi chương trình. Lý do dẫn đến ngoại lệ là do một số tài nguyên không có sẵn hoặc phạm vi của một mảng không hợp lệ. Những loại tình huống bất thường này được gọi là ngoại lệ và cách xử lý chúng được gọi xử lý ngoại lệ. 

Ví dụ về Exception trong Java

Một số ví dụ phổ biến về Exception trong Java là:

  • Cố gắng truy cập các phần tử mảng có chỉ mục không hợp lệ
  • Dữ liệu đầu vào không hợp lệ của người dùng
  • Mở tệp không tồn tại
  • Hết bộ nhớ
  • Mất kết nối mạng
  • JVM hết bộ nhớ

Nguyên nhân gây ra Exception trong Java

Một ngoại lệ trong Java xảy ra trong quá trình thực thi một chương trình. Ngoại lệ là các sự kiện không mong muốn xảy ra trong thời gian chạy và làm gián đoạn luồng thực thi chương trình bình thường.

Một số nguyên nhân của ngoại lệ có thể là:

  • Bởi người dùng,
  • Bởi lập trình viên,
  • Hoặc do tài nguyên vật lý bị hỏng hoặc bị lỗi.

Các loại ngoại lệ trong Java

Có ba loại ngoại lệ trong Java. Đây là các trường hợp ngoại lệ được kiểm tra, chưa được kiểm tra và lỗi. 

Ngoại  lệ được kiểm tra trong Java

Khái niệm ngoại lệ được kiểm tra

Một ngoại lệ đã kiểm tra là một ngoại lệ thời gian biên dịch, tức là một trình biên dịch Java sẽ kiểm tra hoặc thông báo trong thời gian biên dịch. Chúng xảy ra trong thời gian biên dịch. Trình biên dịch kiểm tra các ngoại lệ đã kiểm tra trong quá trình biên dịch để kiểm tra xem liệu người lập trình đã viết mã để xử lý chúng hay chưa. Lập trình viên không thể đơn giản bỏ qua những ngoại lệ này và nên cẩn thận để xử lý những ngoại lệ này.

Nếu lập trình viên không viết mã để xử lý chúng thì sẽ xảy ra lỗi biên dịch. Phương thức ném một ngoại lệ đã kiểm tra cần phải chỉ định hoặc xử lý nó.

Một số loại ngoại lệ được kiểm tra

Một số ngoại lệ được kiểm tra là SQLException, IOException, ClassNotFoundException, InvocationTargetException, …

Ví dụ: Nếu chúng ta viết một chương trình để đọc dữ liệu từ một tệp bằng lớp FileReader và nếu tệp không tồn tại thì  FileNotFoundException sẽ xuất hiện.

SQLException

Loại ngoại lệ này xảy ra khi người dùng cố gắng thực hiện các truy vấn không hợp lệ trên cơ sở dữ liệu và có lỗi truy cập cơ sở dữ liệu.

IOException

Loại ngoại lệ này xảy ra khi JVM không mở được tệp luồng I / O.

ClassNotFoundException

Loại ngoại lệ này xảy ra khi JVM không thể tìm thấy lớp được yêu cầu. Nó có thể xảy ra khi một lớp bị xóa khỏi CLASSPATH.

>>> Tham khảo: Java loop - Tìm hiểu tổng quan về Vòng lặp Loop trong Java

Ngoại lệ không được kiểm tra trong Java

Khái niệm ngoại lệ không được kiểm tra

Một ngoại lệ xảy ra trong quá trình thực thi một chương trình được gọi là ngoại lệ không được kiểm tra hoặc thời gian chạy. Không giống như các ngoại lệ đã được kiểm tra, trình biên dịch thường bỏ qua các ngoại lệ này trong quá trình biên dịch đúng hơn, chúng được kiểm tra trong thời gian chạy.

Do đó, trình biên dịch không kiểm tra xem lập trình viên đã viết mã để xử lý chúng hay chưa mà trách nhiệm của lập trình viên là xử lý các ngoại lệ chưa được kiểm tra và cung cấp lối thoát an toàn.

Ví dụ về ngoại lệ không được kiểm tra

Ví dụ, nếu một chương trình cố gắng chia một số cho không. Hoặc, khi có một hoạt động số học bất hợp pháp, sự kiện bất khả thi này tạo ra một ngoại lệ thời gian chạy. 

Giả sử, chúng ta khai báo một mảng có kích thước 10 trong một chương trình và cố gắng truy cập vào phần tử thứ 12 của mảng hoặc với chỉ số âm như -5, thì chúng ta nhận được một ngoại lệ ArrayIndexOutOfBounds.

Một số ngoại lệ không được kiểm tra là ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, NumberFormatException, InputMismatchException, IllegalStateException, v.v. Chúng ta sẽ thảo luận về từng trường hợp chúng với một ví dụ.

Ngoại lệ số học trong Java

Loại ngoại lệ này xảy ra khi người dùng cố gắng thực hiện một hoạt động số học không chính xác trong chương trình. Ví dụ, nếu bạn chia bất kỳ số nào cho số 0, thì sẽ có một Ngoại lệ số học. Hãy để cùng xem xét đoạn mã sau:

package com.techvidvan.exceptions;

public class UnCheckedExceptions

{

  public static void main(String args[])

  {

    int number1 = 10;

    int number2 = 0;

    //Arithmetic Exception

    int result = number1/number2;

    System.out.println("Result of 10/0 is: " + result);

  }

}

 

Output

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

at project1/com.techvidvan.exceptions.UnCheckedExceptions.main(UnCheckedExceptions.java:10)

>>> Tham khảo: Khóa học lập trình Java 

Errors trong Java

Lỗi không phải ngoại lệ nhưng có thể được coi như một loại ngoại lệ. Lỗi là một sự cố hoặc tình huống nghiêm trọng mà người dùng hoặc nhà phát triển không thể khôi phục. Nguyên nhân của Lỗi trong Java là khi người dùng bỏ qua mã hoặc hiếm khi quan tâm đến lỗi. Ví dụ, nếu một hàng đợi đã đầy và xảy ra tràn, lỗi sẽ xuất hiện.

Một số lỗi trong Java là VirtualMachineError, OutOfMemoryError, AssertionError, v.v.

So sánh lỗi và ngoại lệ trong Java

Lỗi

Lỗi chỉ ra một điều kiện không thể phục hồi và do đó không thể viết code nếu không bắt lỗi. Lỗi thường khiến JVM hiển thị thông báo và thoát.

Ngoại lệ

Ngoại  lệ là điều kiện có thể phục hồi mà một chương trình có thể cố gắng xử lý.

Cấu trúc phân cấp Exception trong Java

Dưới đây là sơ đồ phân cấp ngoại lệ trong Java. Lớp có thể ném là lớp cha của tất cả các lớp Lỗi và Ngoại lệ . Đối tượng Lỗi mô tả các lỗi nội bộ không thể giải quyết được, ví dụ như cạn kiệt tài nguyên, … Đối tượng Ngoại lệ mô tả lỗi có thể khôi phục mà lập trình viên nên xử lý đúng cách.

Cấu trúc phân cấp Exception trong Java

Cấu trúc phân cấp Exception trong Java

Kết luận: Trong bài viết này chúng ta đã tìm hiểu về Exception trong Java. Hy vọng qua bài viết này bạn đã hiểu rõ về ngoại lệ trong Java. Cùng tìm hiểu về Java trong các bài viết tiếp theo và đừng quên tham khảo các khóa học lập trình tại T3H để mở rộng kiến thức về các ngôn ngữ lập trình bạn nhé!

Nguồn tham khảo: techvidvan