Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa ném và ném trong Java

Ném và ném là các từ khóa được sử dụng trong xử lý ngoại lệ. Từ khóa throw được sử dụng để chuyển giao thể hiện của ngoại lệ được lập trình viên tạo ra cho JVM theo cách thủ công. Từ khóa ném được sử dụng để chuyển giao trách nhiệm xử lý ngoại lệ xảy ra trong phương thức cho phương thức người gọi. Sự khác biệt cơ bản giữa ném và ném là từ khóa ném sử dụng đối tượng ngoại lệ trong khi từ khóa ném sử dụng tên của các lớp ngoại lệ.

Biểu đồ so sánh

Cơ sở so sánhnémném
Căn bảnTừ khóa throw bàn giao đối tượng ngoại lệ được tạo của chúng tôi cho JVM theo cách thủ công.Từ khóa ném được sử dụng để ủy thác trách nhiệm xử lý ngoại lệ cho người gọi phương thức.
Cú phápném Ném-dụ;return_type method_name (danh sách tham số) ném ExceptionClass_list
{
// phần thân của phương thức
}
Theo dõi bởiCác từ khóa ném được theo sau bởi đối tượng ngoại lệ.Từ khóa ném được theo sau bởi danh sách các lớp ngoại lệ có thể xảy ra trong phương thức.
Số lượng ngoại lệ némTừ khóa throw có thể ném một trường hợp ngoại lệ duy nhất.Từ khóa ném có thể khai báo nhiều lớp ngoại lệ được phân tách bằng dấu phẩy.

Định nghĩa ném

Từ khóa ném ném ném được sử dụng để bàn giao cá thể ngoại lệ được tạo của chúng tôi cho JVM (Máy ảo Java) theo cách thủ công. Nếu ném ném thì không được sử dụng để ném một trường hợp ngoại lệ và ngoại lệ xảy ra, thì hệ thống thời gian chạy bên trong sẽ ném trường hợp ngoại lệ vào JVM và chương trình chấm dứt một cách bất thường. Hình thức chung của từ khóa throw là:

 ném throwable_instance; 

Phía trên throwable_instance phải là một đối tượng của lớp throwable. Các kiểu nguyên thủy như int, float hoặc char và thể hiện của lớp không thể ném được không thể được sử dụng bằng từ khóa throw.

Hãy để chúng tôi lấy một ví dụ để hiểu từ khóa ném.

 Kiểm tra lớp {static static void main (String [] args) {throw new ArithaturesException ("/ by zero"); }} 

Trong đoạn mã trên, từ khóa throw ném một thể hiện của lớp Exception, ArithaturesException, ví dụ. Nếu từ khóa throw chưa được sử dụng thì phương thức main () sẽ tạo bên trong một đối tượng ngoại lệ được truyền cho JVM.

Những điểm cần nhớ về cú ném từ khóa:

  • Nó bàn giao đối tượng ngoại lệ theo cách thủ công cho JVM.
  • Nó được sử dụng tốt nhất cho các ngoại lệ do người dùng xác định hoặc ngoại lệ tùy chỉnh.
  • Nếu bộ nhớ không được phân bổ cho đối tượng ngoại lệ được ném bởi từ khóa throw, thì sẽ xảy ra ngoại lệ thời gian chạy, NullPulumException.
  • Từ khóa throw dừng thực thi chương trình ngay sau khi xuất hiện. chúng tôi không thể trực tiếp viết bất kỳ tuyên bố nào sau tuyên bố ném. Nếu chúng ta viết bất kỳ staement trực tiếp sau câu lệnh throw thì trình biên dịch sẽ hiển thị một lỗi, câu lệnh không thể truy cập trong quá trình biên dịch.
  • Chỉ các đối tượng của lớp throwable có thể được ném bằng từ khóa throw. Nếu đối tượng bị ném không phải là đối tượng của lớp throwable thì chúng ta sẽ gặp lỗi thời gian biên dịch Loại không tương thích được tìm thấy. . bắt buộc java.lang.Throwable

Chú thích:

Từ khóa throw được sử dụng trong C ++, JAVA, C #, để ném ngoại lệ theo cách thủ công.

Định nghĩa ném

Từ khóa ném ném từ khóa được sử dụng để ủy thác trách nhiệm xử lý ngoại lệ xảy ra trong phương thức, cho phương thức người gọi của nó. Phương thức người gọi chịu trách nhiệm xử lý ngoại lệ, nó có thể là bất kỳ phương thức hoặc JVM nào khác. Nó khai báo danh sách các lớp ngoại lệ có thể xảy ra trong phương thức.

Việc sử dụng từ khóa throws thuyết phục trình biên dịch rằng ngoại lệ xảy ra trong phương thức sẽ được xử lý bởi phương thức người gọi do đó không xảy ra lỗi biên dịch. Nhưng, phương thức người gọi phải xử lý ngoại lệ hoặc ủy thác trách nhiệm xử lý ngoại lệ cho phương thức phân cấp của nó. Khi ngoại lệ thời gian chạy xảy ra, ngay cả sau khi sử dụng từ khóa ném, nó không ngăn chặn sự chấm dứt bất thường của chương trình. Nếu phương thức người gọi là main (), thì JVM mặc định xử lý ngoại lệ.

Hình thức chung của từ khóa ném là:

 return_type method_name (danh sách tham số) ném ngoại lệClass_list {// phần thân của phương thức} 

Chúng ta có thể thấy rằng từ khóa ném xuất hiện sau chữ ký của phương thức và nó có thể chứa danh sách các lớp ngoại lệ có thể xảy ra trong phương thức. Danh sách các lớp ngoại lệ được viết sau khi ném từ khóa được phân tách bằng dấu phẩy.

Hãy để chúng tôi lấy một ví dụ để hiểu từ khóa ném.

 calss Test {public static void main (String [] args) throws InterruptedException {thread ngủ (10000); }} 

Trong đoạn mã trên, luồng chính được thực hiện để ngủ trong một thời gian bằng cách sử dụng phương thức ngủ (). Bây giờ, khi phương thức chính đang ngủ, có thể các luồng khác có thể làm gián đoạn luồng chính. Nhưng, từ khóa throws được sử dụng sau chữ ký của phương thức main () vì vậy, chương trình sẽ biên dịch dễ dàng. Từ khóa ném đang khai báo lớp ngoại lệ được kiểm tra Interrupttedception. Bây giờ, nếu bất kỳ luồng nào khác làm gián đoạn luồng chính trong thời gian chạy, từ khóa throws sẽ chuyển giao ngoại lệ đó cho người gọi phương thức main (), đó là JVM. JVM sẽ chấm dứt chương trình một cách bất thường.

Những điểm cần nhớ về từ khóa ném:

  • Từ khóa throws chỉ được sử dụng để khai báo các lớp ngoại lệ được kiểm tra. Việc sử dụng từ khóa ném cho một ngoại lệ không được kiểm tra không có tác động.
  • Nếu phương thức không muốn tự xử lý ngoại lệ, nó sẽ ủy thác ngoại lệ đó cho phương thức người gọi của lớp đó bằng cách sử dụng từ khóa throws.
  • Việc sử dụng nó chỉ cho phép biên dịch chương trình trơn tru.
  • Nếu một ngoại lệ xảy ra trong thời gian chạy, chương trình chấm dứt bất thường, ngay cả sau khi sử dụng từ khóa ném.
  • Nên sử dụng khối try / Catch để kết thúc chương trình bình thường nếu có ngoại lệ xảy ra trong thời gian chạy.

Chú thích:

Các từ khóa ném chỉ được sử dụng trong Java. C ++ và C # không sử dụng từ khóa ném.

Sự khác biệt chính giữa ném và ném

  1. Việc ném từ khóa, chuyển giao trách nhiệm xử lý ngoại lệ cho JVM theo cách thủ công trong khi đó, từ khóa ném, chuyển giao trách nhiệm xử lý ngoại lệ cho phương thức người gọi mã nơi xảy ra ngoại lệ.
  2. Từ khóa throw được theo sau bởi đối tượng ngoại lệ mà nó bàn giao cho JVM. Mặt khác, ném từ khóa được theo sau bởi các lớp ngoại lệ có thể xảy ra trong phương thức.
  3. Từ khóa throw có thể ném một đối tượng ngoại lệ tại một thời điểm trong khi đó, từ khóa throws có thể khai báo nhiều lớp ngoại lệ được phân tách bằng dấu phẩy tại một thời điểm.

Phần kết luận:

Từ khóa throw được sử dụng tốt nhất cho ngoại lệ tùy chỉnh. Khối thử / bắt là tốt nhất để xử lý các ngoại lệ khi so sánh từ khóa ném.

Top