Java: Solution phần Exception

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Xin xem phần câu hỏi và bài tập tại ĐÂY.

Solution phần Câu hỏi

  1. Trả lời: Hợp lệ - và rất hữu ích. Khối try không cần phải có khối catch nếu nó đã có khối finally. Nếu mã lệnh trong khối try có nhiều điểm thoát và không có liên quan đến catch, thì mã lệnh trong khối finally được thực hiện mà không quan tâm đến vấn đề khối try đã thoát thế nào và có thoát được hay không. Do đó, trong khối finally nên chứa mã lệnh mà luôn luôn có thể thực thi được dù bất kỳ điều gì xảy ra. Thường thì mã lệnh liên quan đến các tài nguyên mã phục hồi, chẳng hạn như mã đóng luồng nhập/xuất.
  2. Trả lời: Trình xử lý này bắt các ngoại lệ có kiểu Exception; do đó, nó sẽ bắt được bất kỳ loại ngoại lệ nào. Điều này có thể dẫn đến sự thực thi nghèo nàn, tức là ta có thể mất đi thông tin về kiểu ngoại lệ được ném ra hay nói cách khác là ta không biết được chính xác ngoại lệ ném ra là gì và làm cho mã lệnh của bạn kém hiệu quả. Kết quả là, chương trình của bạn có thể ở tình trạng bị buộc phải xác định kiểu ngoại lệ trước khi nó có thể quyết định cách thức phục hồi tốt nhất.

  3. Trả lời: Trình xử lý đầu tiên sẽ bắt những ngoại lệ có kiểu Exception, tức là nó có thể bắt bất kỳ ngoại lệ nào, bao gồm cả ngoại lệ ArithmeticException. Như vậy thì trình xử lý sự kiện thứ hai không bao giờ được dùng, tức là đoạn mã trong trình xử lý thứ hai sẽ không được biên dịch.
  4. Trả lời:

    1. 3 (lỗi biên dịch). Mảng không được khởi  tạo và sẽ không biên dịch được.
    2. 1 (lỗi).
    3. 4 (không có ngoại lệ). Khi bạn đọc một luồng thì bạn mong muốn đọc được một dấu kết thúc luồng. Bạn nên sử dụng ngoại lệ để bắt hành vi bất ngờ trong chương trình của bạn.
    4. 2 (ngoại lệ checked).

Solution phần bài tập

  1. Trả lời: Xin mời xem ví dụ ListOfNumbers2.

  2. Trả lời: Đoạn mã bắt ngoại lệ được thể hiện ở phần làm đậm:

    public static void cat(File file) {
        RandomAccessFile input = null;
        String line = null;

        try {
            input = new RandomAccessFile(file, "r");
            while ((line = input.readLine()) != null) {
                System.out.println(line);
            }
            return;
        } catch(FileNotFoundException fnf) {
            System.err.format("File: %s not found%n", file);
        } catch(IOException e) {
            System.err.println(e.toString());

        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch(IOException io) {
                }

            }
        }
    }

» Tiếp: Hệ thống quản lý số điện thoại
« Trước: Solution Practical 1
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!