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:
Constructor Injection in Spring with Lombok
Jackson Date
Introduction to Spring Data JDBC
Java Program to Implement Solovay Strassen Primality Test Algorithm
Spring Boot - Creating Docker Image
HandlerAdapters in Spring MVC
Introduction to Spring Cloud Rest Client with Netflix Ribbon
Introduction to Spliterator in Java
Java Program to Generate a Random UnDirected Graph for a Given Number of Edges
Introduction to Spring Data REST
Connect through a Proxy
Java Program to implement Array Deque
How to Round a Number to N Decimal Places in Java
Guide to the Volatile Keyword in Java
How to Get All Dates Between Two Dates?
Mệnh đề if-else trong java
Check If Two Lists are Equal in Java
Lấy ngày giờ hiện tại trong Java
Comparing Strings in Java
Guide to the Synchronized Keyword in Java
Java Program to Implement Trie
Consumer trong Java 8
Get the workstation name or IP
Java Program to implement Priority Queue
Spring REST API + OAuth2 + Angular
A Guide to JPA with Spring
Send email with authentication
Introduction to Spring Data MongoDB
Spring Cloud – Tracing Services with Zipkin
Introduction to Using FreeMarker in Spring MVC
Using a List of Values in a JdbcTemplate IN Clause
Custom Exception trong Java