Nói sơ về lỗi biên dịch Compiler Error.

Vần để vể lỗi, cấu trúc lỗi, quản lý lỗi, kiểm tra lỗi, trước đây trong lúc học C# cũng có học qua, nói chính xác thầy cũng chỉ nói sơ sớ quá và không rõ ràng nên mình cũng chả quan tâm, thường thì có lỗi thì đọc xem lỗi là gì rồi check debug tìm nguyên nhân.

Tuy nhiên gần đây có tiếp xúc một chút kiến thức về Error thuộc bên Java, thì thấy có một chút thú vị về việt quản lý lỗi, cấu trúc lỗi, kiểm tra lỗi nói chung là các vấn đề lỗi, tuy nhiên do hơi bận rộn nên không có nhiều time nên biết tới đâu mình xin trình bày lại tới đó.

Bài viết này mình xin được nói sơ về lỗi Compiler Error (tên đầy đủ là Compile-time error) được dịch sang tiếng việt với cái tên phổ biến là lỗi cú pháp (hoặc lỗi biên soạn), một số trang web hoặc sách thì gọi thường gọi nó là lỗi biên dịch.

Compiler Error

Ba cái tên này thật sự làm mình bối rối khi tìm hiểu, và sau khi tìm hiểu kỹ thì 3 cái tên này trong tiếng việt điều chỉ về "Complie-time error", tại sao lại như vậy? một là tại Việt Nam chưa có cơ quan hoặc tổ chức nào qui định về việc sử dụng các tên gọi chung trong lãnh vực lập trình, chính vì vậy khi "Complie-time error" được dịch ra thì nó được dịch theo nhiểu nghĩa khác nhau theo cách hiểu của nhiều người khác nhau. Trên thực tế vấy đề này là một hiện tượng phổ biến trên tất cả các lãnh vực tại Việt Nam.

Lỡ tìm hiểu rồi mình xin giải thích một chút về 3 các tên tiếng việt của "Compile-time error" chút:
  • "lỗi biên soạn" tên thì dễ rùi, cứ dịch từ tiếng anh sang tiếng việt theo nguyên bản là thấy liền, tên này có thể do các pác dịch theo nguyên bản :))
  • "lỗi biên dịch", tên này nếu muốn hiểu rõ mình bạn phải hiểu về cách mà CODE được biên dịch thành ứng dụng (application) để chạy (run application) được thực hiện như thế nào, ở đây mình xin giải thích ngắn ngọn là khi biên dịch CODE thành chương trình thình trình biên dịch gọi là (Compiler) sẽ thực hiện một thao tác kiểm tra xem các CODE của bạn có hợp lệ hay không, và nếu không lệ thì việc build chương trình (build application) sẽ bị lỗi, và tất nhiên lỗi xảy ra trong quá trình biên dịch thì sẽ được gọi là "lỗi biên dịch" :)).
  • "lỗi cú pháp" trên một số công cụ hỗ trợ lập trình (IDE) mới và hiện đại :)) có chức năng kiểm tra lỗi tức thì khi ta gõ sai lệnh, từ khóa, cú pháp thì chương trình sẽ tô đỏ ngay tại chỗ ta làm sai để cảnh báo cho ta biết là ta đã sai cú pháp, lệnh, từ khóa gì đó, và khi người dịch, hoặc người lập trình nhìn vào có thể đoán ngay đây là "lỗi cú pháp", và thế là em nó ra đời.

Ok bây giờ khi đã hiểu rõ 3 cái tên tiếng việt rùi thì trong bài này chúng ta sẽ thống nhất cách gọi là "Compiler Error" :)) tốt nhất dùng tên tiếng anh cho nó lành. Để hiểu rõ chúng ta sẽ đi qua một ví dụ thực tế trước, mình có một đoạn mã tạo một tập tin mới bằng Java trong Netbeans IDE như sau:

Nói sơ về lỗi biên dịch Compiler Error.

Như các bạn thấy trong hình tôi bị dính một Compiler Error là:
exception IOException is never thrown in body of corresponding try statement.
(ngoại lệ IPException không bao giời xảy ra trong vùng mã trong hàm TRY.)

Ý ở đây là với đoạn mã tạo tập tin với [ File f = new File ("a.txt") ] sẽ không bao giờ xảy ra lỗi có liên quan tới "IOExceptoin", và trong Java điều này được xem là Compiler Error, bây giờ ta hãy thử biên dịch (compiler) chương trình bằng cách nhấn vào button "Clean and Build" với lỗi này để xem Netbeans sẽ báo gì?

Nói sơ về lỗi biên dịch Compiler Error 001.

Ok trong dòng báo lỗi màu đỏ đỏ (nếu hình nhỏ quá bạn click chuột nào hình để xem hình lớn) ta sẽ nhận được thông báo lỗi với nội dung là:
Compiling 1 source file to C:\Users\bnson\Documents\NetBeansProjects\Test\build\classes
C:\Users\bnson\Documents\NetBeansProjects\Test\src\test\Test.java:23: error: exception IOException is never thrown in body of corresponding try statement
        } catch (IOException io) {
1 error

C:\Users\bnson\Documents\NetBeansProjects\Test\nbproject\build-impl.xml:929: The following error occurred while executing this line:
C:\Users\bnson\Documents\NetBeansProjects\Test\nbproject\build-impl.xml:269: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 3 seconds)

Trong đó bạn sẽ thấy một dòng ghi là "Compile failed; see the compiler error output for details.", oh kìa có chữ "compiler error" vậy đây là là lỗi compiler error :)).

Ok, thông quá ví dụ trên bạn đã có thể hiểu được "Compiler Error" là gì, và bạn cũng biết được nếu bị dính lỗi này thì quá trình biên dịch (comiler) code thành chương trình (application) sẽ không thực hiện được, và buộc phải phải fix lỗi này để có thể biên dịch thành công chương trình.

Nếu bạn thấy ví dụ trên phức tạp thì bạn có thể tự thực hành một ví đơn giản khác về  "Compiler Error" là khai báo 2 biến, một kiểu STRING một kiểu INT và gắn chúng lại với nhau bạn cũng sẽ nhận được lỗi, tuy khác biệt nhưng vẫn được gọi chung là "Compiler Error"
package test;

import java.io.File;
import java.io.IOException;

/**
 *
 * @author bnson
 * @wesite vnlives.net
 */
public class Test {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    }

    public void createFile () {
        String a;
        int b;
        a = b;
    }   
   
}

Nói dai nói dài nhưng nói hay, thì tóm lại "Compiler Error là loại lỗi xảy ra trong quá trình biên dịch code (compiler time) thành ứng dụng (build application) và bạn không thể nào bỏ qua lỗi này nếu muốn build application thành công"

Nói thêm một chung "Compiler Error" còn có thể được gọi là "Checked exceptions" một loại ngoại lệ trong các bài viết về "exception" bữa nào có time thì mình viết một bài chi tiết về "exceptions" để bạn có thể hiểu rõ hơn.


Writer: +Bui Ngoc Son









No comments:

Post a Comment