[Java] Xử Lý Ngoại Lệ Trong Java [Exceptions]


Ngoại lệ (Exceptions) trong Java là các đối tượng có kiểu lớp (class) định nghĩa sẵn, biểu diễn trạng thái (status) lỗi tự động phát sinh trong trường hợp nào đó khi một hàm được thực hiện. Các hàm trong Java được định nghĩa sẵn trong trường hợp nào thì có kiểu ngoại lệ nào đó sẽ phát sinh.

Khi một ngoại lệ nảy sinh, có thể lựa chọn hai khả năng xử lý: 
- Bắt lỗi để xử lý hay 
- Bỏ qua không xử lý.

Các lệnh xử lý ngoại lệ thực hiện thông qua năm từ khoá : try, catch, finally, throw và throws

Cụ thể:

1. Câulệnh try…catch…finally

Cú pháp: 

  try {

     //  Các câu lệnh có thể sinh ngoại lệ;

  } 
  catch (Exception-Tên kiểu ngoại lệ 1 ) 
  {

     //  Các câu lệnh xử lý khi gặp ngoại lệ 1;

  }
  catch (Exception-Tên kiểu ngoại lệ 2 ) 
  {
   
     //  Các câu lệnh có thể sinh ngoại lệ 2;

   }

     …

    finally 
    {

       //  Các câu lệnh luôn thực hiện ngay cả khi có ngoại lệ;

    }


    
Câu lệnh : có thể là một hay nhiều lệnh đơn, hay cấu trúc điều khiển.

Ý nghĩa:

    - try : định nghĩa một khối lệnh mà ngoại lệ có thể xảy ra.

    - catch : đi kèm với try, để bắt ngoại lệ. Những câu lệnh trong chương trình mà bạn muốn bắt ngoại lệ được đưa vào giữa khối try, nếu một ngoại lệ xảy ra trong khối try, thân của mệnh đề catch có kiểu ngoại lệ tương ứng sẽ được thực hiện. Có thể có nhiều mệnh đề catch bắt các kiểu ngoại lệ khác nhau.

    - finally : thân của mệnh đề finally luôn luôn thực hiện trước khi lệnh try kết thúc, cho dù có hay không có ngoại lệ, mệnh đề finally có thể có hay không.

2. Mệnh đề throws

Nếu một hàm chứa lệnh (lời gọi hàm) có nảy sinh ngoại lệ mà bạn không bắt lấy bằng lệnh try… catch, khi đó bạn phải cho qua ngoại lệ bằng cách thêm mệnh đề throws vào cuối khai báo hàm, nếu không trình biên dịch sẽ báo lỗi. 

Sau throws liệt kê các kiểu ngoại lệ hàm có thể gây ra:

    throwsException-Type1, Exception-Type2…

     Exception-Type1, Exception-Type2… là các kiểu ngoại lệ cách nhau dấu phẩy


Ngoại trừ kiểu Error, RuntimeException và các kiểu lớp con của chúng có thể không cần try … catch hay throws, trình biên dịch sẽ không báo lỗi

3. Lệnh throw

Cú pháp: 
    
   throw Exception-Instance;

 Exception-Instance là một đối tượng của kiểu ngoại lệ

Có hai cách tạo một đối tượng kiểu ngoại lệ : dùng một tham đối trong mệnh đề catch hay tạo một đối tượng mới bằng toán tử new

Ví dụ: 
   
    throw new NumberFormatException();


Ý nghĩa:

Câu lệnh throw được đưa vào khối try, cho phép bạn điều khiển điều kiện phát sinh ngoại lệ. Khi gặp lệnh throw, các câu lệnh sau throw sẽ được bỏ qua, và lệnh try chứa lệnh throw, sẽ tìm khối lệnh của mệnh đề catch có kiểu ngoại lệ tương ứng để thực hiện

Ví dụ: 
  
   Viết chương trình nhập vào họ tên, và năm sinh với điều kiện họ tên không quá 30 ký tự, và năm sinh từ 1990 đến 2000

import java.io.*;
import java.util.Scanner;

class Nhap {

  // Cho qua kiểu ngoại lệ IOException là lỗi nhập xuất phát sinh khi thực hiện hàm

  // readLine() của lớp BufferedReader

  public static void main (String[] args) throws IOException{

     Scanner inp=new Scanner(System.in);

     String s = null;

     // Nhap ho ten

    do { 

         System.out.print(“Nhap Ho va ten khong qua 30 ky tu: “);
       
         s =inp.nextLine();

    } while (s.length()>30 || s.length()==0);

   System.out.println(“Ho va ten là : “+s);

    // Nhap nam sinh

   while (true) {
 
    try {

         System.out.print(“Nhap nam sinh : “);
         s = inp.nextLine();
       
        //Hàm parseInt() của lớp Integer phát sinh lỗi định dạng số
       
        int ns =Integer.parseInt(s);
       
        //Điều kiện phát sinh lỗi định dạng số NumberFormatException
       if (ns<1990 || ns>2000) throw new NumberFormatException();
          System.out.println(“Nam sinh la : “+ns);

       break;

    }

   //Bắt kiểu ngoại lệ NumberFormatException
   catch(NumberFormatException e){
          System.out.println(“Ban nhap lai nam sinh tu 1980 -1985″);
   }
  }
 }
}

Quảng cáo

Загрузка...

Categories

8051 (1) AI (1) AI programming (1) amazon (1) Android (27) ASP (1) Assembly (17) Bài giảng (2) Bài giảng lập trình C và Cpp (16) bài giảng quản lý dự án CNTT (1) bài tập java (1) bài tập lập trình (1) Bài viết hay (62) Bản đồ tư duy (1) Bidvertiser (1) Biểu diễn thuật toán (1) bitcoin (1) blockchain (1) Blockchain là gì (1) Bubble-Sort (1) C (77) C Plus Plus (103) C sharp (11) C++ (3) cấu trúc dữ liệu giải thuật (1) Cây (tree) (2) Cây quyết định (3) CDSL phân tán (1) Chữa bài tập Java (1) code assembly (1) Công nghệ điện toán đám mây (1) Công nghệ lập trình (1) Cơ sở dữ liệu (10) CSS (2) Cuộc cách mạng công nghiệp 4.0 (1) Danh ngôn lập trình (1) Danh sách liên kết (list) (1) Datamining (4) Đại số gia tử và ứng dụng (1) đăng ký Amazon (1) Đăng ký hosting (2) đặt hàng trên Amazon (1) Đệ quy (2) Đồ họa (4) Độ phức tạp của thuật toán (1) ebook-csdl (1) ebook-giaithuat (1) ebook-laptrinh (1) ebook-phancung-mang (1) ebook-tinhocungdung (1) ebook-web (1) Exceptions (1) Genetic Algorithm (1) Giải hệ phương trình tuyến tính (5) giải thuật (3) giải thuật Đệ quy (1) Giáo trình (2) Góc học tập (34) Góc suy ngẫm (1) Google App Engine (2) Heap-Sort (1) Hệ quản trị CSDL (1) Học lập trình (125) Học lập trình C và CPP qua ví dụ (15) học lập trình Java (7) HostGator (1) hợp ngữ (1) HPH (25) HTML (1) Hướng Dẫn Đăng Ký Tên Miền và Host Trên Hostgator (1) hướng dẫn mua host (1) hướng dẫn nhận tiền (1) hướng dẫn payoneer (1) Hướng dẫn sử dụng Emu8086 (1) hướng dẫn viết báo (1) hướng đăng ký tên miền (1) Insert-sort (2) iOS (1) Java (50) Java Căn bản (5) java core (3) Java GUI (1) JavaScript (3) Kiếm tiền online (10) Kỹ thuật đồ họa máy tính (9) Kỹ thuật lập trình (16) kỹ thuật SEO (1) Lập trình 8051 với C/C++ (1) Lập trình căn bản (7) Lập trình Cơ sở dữ liệu (2) Lập trình điều khiển thiết bị (1) Lập trình hợp ngữ (1) Lập trình hướng đối tượng (38) Lập trình hướng đối tượng với Java (6) Lập trình mạng (6) Lập trình mobile (3) Lập trình nhúng (1) Lập trình trí tuệ nhân tạo (1) lập trình vi xử lý (1) lập trình viên (1) Lập trình viên độc lập (1) Luyện thi IC3 (4) Lý thuyết Cơ sở dữ liệu (2) Lý thuyết đồ thị (11) Mạng máy tính (1) Mẹo tìm kiếm trên Google (1) Merge-Sort (1) MS Access (1) Mua hàng trên Amazon (1) Nghiên cứu khoa học (1) ngon-ngu-khac (1) Ngôn ngữ lập trình (1) Nhúng code Assembly trong C\C++ (2) Những lỗi thường gặp khi lập trình (1) Oracle (1) Pascal (3) payoneer (1) people-group (1) phần cứng máy tính (1) PHP (1) Quản lý dự án CNTT (1) Queue (hàng đợi) (1) Quick-Sort (1) Seclection-sort (2) SEO (1) SQL (5) Stack (ngăn xếp) (1) Swift (8) tài liệu CNTT miễn phí (2) Tài liệu tham khảo (2) thanh toán quốc tế (1) Thiết kế Web (2) Thủ thuật máy tính (5) thuattoan-khac (1) Thuật toán (41) Thuật toán di truyền (2) Thuật toán Đệ quy (4) Thuật toán K-Mean (1) Thuật toán khác (9) Thuật toán leo đồi (1) Thuật toán ma trận (7) Thuật toán Sắp Xếp -Sort (9) Thuật toán Tìm kiếm - Search (5) Thương mại điện tử (4) Tiện ích máy tính (3) Tìm hiểu Blockchain (1) Tìm kiếm nhị phân (2) Tìm kiếm tuần tự (Line search) (2) Tin học văn phòng (5) Tin tức công nghệ (7) Tính định thức của ma trận (1) Toán rời rạc (12) Trí tuệ nhân tạo (8) Tự học lập trình Android (14) Tự học lập trình C và CPP (14) tự học lập trình iOS (8) Tự học lập trình java qua các ví dụ (7) Ứng dụng cơ sở dữ liệu (1) VB (2) vẽ ngôi nhà (1) ví dụ Assembly (1) xcode (8) XML (1) Xử lý ma trận (mảng 2 chiều) (7) Xử lý mảng 1 chiều (1) Xử lý ngoại lệ (1)