Table of Contents
Có một vài quy tắc về xử lý ngoại lệ (exception handling) với ghi đè (overriding) phương thức trong java như sau:
1. Trường hợp phương thức của lớp cha không khai báo ném ra exception
Nếu phương thức của lớp cha không khai báo ném ra exception, phương thức được ghi đè của lớp cha không thể khai báo ném ra ngoại lệ checked, nhưng ngoại lệ unchecked thì có thể.
1.1. Ví dụ lớp con không thể khai báo ném ra ngoại lệ checked
class Parent { void msg() { System.out.println("parent"); } }
import java.io.IOException; public class ExceptionChildExample extends Parent { void msg() throws IOException { // không thể khai báo ném ra ngoại lệ checked System.out.println("TestExceptionChild"); } public static void main(String args[]) { Parent p = new ExceptionChildExample(); p.msg(); } }
Thực thi chương trình trên:
Compile Time Error
1.2. Ví dụ lớp con có thể khai báo ném ra ngoại lệ unchecked
class Parent { void msg() { System.out.println("parent"); } }
public class ExceptionChildExample extends Parent { void msg() throws ArithmeticException { // có thể khai báo ném ra ngoại lệ unchecked System.out.println("TestExceptionChild"); } public static void main(String args[]) { Parent p = new ExceptionChildExample(); p.msg(); } }
Thực thi chương trình trên:
TestExceptionChild
2. Trường hợp phương thức của lớp cha khai báo ném ra exception
Nếu phương thức của lớp cha khai báo ném ra exception, phương thức được ghi đè của lớp cha có thể khai báo ném ra ngoại lệ tương tự, ngoại lệ con, nhưng không thể khai báo ném ra ngoại lệ cha.
2.1. Ví dụ phương thức ghi đè của lớp cha khai báo ném ra ngoại lệ cha
class Parent { void msg() throws ArithmeticException { System.out.println("parent"); } }
public class ExceptionChildExample extends Parent { // Exception Exception is not compatible with throws clause in Parent.msg() void msg() throws Exception { // Không thể khai báo ném ra ngoại lệ cha System.out.println("child"); } public static void main(String args[]) { Parent p = new ExceptionChildExample(); try { p.msg(); } catch (Exception e) { } } }
Thực thi chương trình trên:
Compile Time Error
2.2. Ví dụ phương thức ghi đè của lớp cha khai báo ném ra ngoại lệ tương tự
class Parent { void msg() throws Exception { System.out.println("parent"); } }
public class ExceptionChildExample extends Parent { void msg() throws Exception { System.out.println("child"); } public static void main(String args[]) { Parent p = new ExceptionChildExample(); try { p.msg(); } catch (Exception e) { } } }
Thực thi chương trình trên:
child
2.3. Ví dụ phương thức ghi đè của lớp cha khai báo ném ra ngoại lệ con
class Parent { void msg() throws Exception { System.out.println("parent"); } }
public class ExceptionChildExample extends Parent { void msg() throws ArithmeticException { System.out.println("child"); } public static void main(String args[]) { Parent p = new ExceptionChildExample(); try { p.msg(); } catch (Exception e) { } } }
Thực thi chương trình trên:
child
2.4. Ví dụ phương thức ghi đè của lớp cha không khai báo ném ra ngoại lệ nào
class Parent { void msg() throws Exception { System.out.println("parent"); } }
public class ExceptionChildExample extends Parent { void msg() { System.out.println("child"); } public static void main(String args[]) { Parent p = new ExceptionChildExample(); try { p.msg(); } catch (Exception e) { } } }
Thực thi chương trình trên:
child
Related posts:
Guava Collections Cookbook
A Guide to Concurrent Queues in Java
Spring Boot - Creating Docker Image
New Features in Java 14
Hướng dẫn sử dụng Lớp FilePermission trong java
Java Program to Perform Sorting Using B-Tree
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Introduction to Spring Method Security
Ignore Null Fields with Jackson
Java – Reader to String
Spring Boot - Enabling Swagger2
Guide to System.gc()
The Guide to RestTemplate
How to Count Duplicate Elements in Arraylist
A Quick Guide to Spring MVC Matrix Variables
The Difference Between map() and flatMap()
Spring AMQP in Reactive Applications
Sending Emails with Java
Hướng dẫn Java Design Pattern – Intercepting Filter
Java Program to Implement Hash Tables with Double Hashing
Inheritance and Composition (Is-a vs Has-a relationship) in Java
Java Program to Implement Ternary Search Tree
Quick Guide to Spring Bean Scopes
Java Program to Implement AA Tree
Hướng dẫn Java Design Pattern – State
Hướng dẫn sử dụng Java Reflection
Guide to Spring Cloud Kubernetes
Giới thiệu HATEOAS
An Intro to Spring Cloud Contract
Spring Security with Maven
Guava – Join and Split Collections
Java Program to Perform Addition Operation Using Bitwise Operators