Java Try Catch - Trường hợp phát sinh nhiều ngoại lệ (How to use multiple cache blocks).





Như ta biết mỗi một đối tượng(object) hay lớp(class) trong lúc thực thi đều có khả năng phát sinh các ngoại lệ, và tất nhiên sẽ không chỉ có duy nhất một ngoại lệ(exception) được phát sinh mà có khả năng là nhiều exception được phát sinh.

Bài viết này chúng ta sẽ phân tích qua trường hợp có nhiều ngoại lệ phát sinh và cách xử lý nó.



Nếu bạn chưa biết ngoại lệ(exception) là gì? thì hãy xem qua bài viết về Java Exception Handling.

Một khối Try đơn có có thể có nhiều khối Catch, điền này là cần thiết khi khối Try có nhiều phát biểu khác nhau về ngoại lệ được tạo ra.

Trong trường hợp khối Catch đầu tiên là lớp đối tượng Exception(Exception class object) thì những khối Catch khác sẽ không bao giờ được thực thi.

Khối Catch cuối cùng trong các khối Catch phải chứ lớp đối được Exception(Exception class object). Bởi vì trình biên dịch cung cấp cho một lỗi nói rằng các khối Catch con sẽ không được thực hiện khi chạy khối Catch có Exception class object.

MultipleCacheBlocks.java
/**
 * @(#)MultipleCacheBlocks.java
 *
 * MultipleCacheBlocks application
 *
 * @author BUI NGOC SON
 * @version 1.00 2014/2/7
 */

import java.net.MalformedURLException;
import java.net.URL;

public class MultipleCacheBlocks {
   
    public static void main(String[] args) {
       
        MultipleCacheBlocks mcb = new MultipleCacheBlocks();
        mcb.execute(1);
        mcb.execute(2);       
    }
   
    public void execute(int i){
        try{
            if(i == 1){
                // Giá trị nhập không phải là số
                // Value input not number.
                getIntValue("7u");
            } else {
                // Bộ địa chỉ này không hợp lệ.
                // This address not exist.
                getUrlObj("www.vnlivess.net");
            }
        } catch (NumberFormatException nfe){
            System.out.println("In NumberFormatException... " + nfe.getMessage());
        } catch (MalformedURLException mfue){
            System.out.println("In MalformedURLException... " + mfue.getMessage());
        } catch (Exception ex){
            System.out.println("In Exception... " + ex.getMessage());
        }
    }
   
    public int getIntValue(String num){
        return Integer.parseInt(num);
    }
    
    public URL getUrlObj(String urlStr) throws MalformedURLException{
        return new URL(urlStr);
    }   
   
}

Sau khi chạy chương trình ta nhận được 2 ngoại lệ như hình sau.













No comments:

Post a Comment