簡體   English   中英

我們如何定義一個擴展java.lang類的Exception類的類

[英]How can we define a class which extends the Exception class of java.lang class

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.*;

public class sentence {
    public static void main() throws IOException {
        InputStreamReader br = new InputStreamReader(System.in);
        BufferedReader in = new BufferedReader(br);
        System.out.println("Enter a sentence.");
        String a = in.readLine();
        String ar[] = new String[10000];
        int k = 0;
        try {
            if (a.length() == 0) {
                throw new NullError();
            }
            if ('a' < a.charAt(0) && a.charAt(0) < 'z') {
                throw new CaseError();
            }
            if (a.charAt(a.length() - 1) != '.') {
                throw new FullStopError();
            }
            int countuppercase = 0;
            String s1 = "";
            for (int i = 0; i < a.length(); i++) {
                char c = a.charAt(i);
                if (1 < countuppercase) {
                    throw new CaseError();
                }
                if (c != ' ' && c != '.') {
                    s1 = s1 + c;
                } else {
                    ar[k] = s1;
                    k++;
                    s1 = "";
                }
            }
        } catch (NullError e) {
            System.out.println("You can't enter an empty string.");
        } catch (CaseError e) {
            System.out
                    .println("You have used the upper case and lower case properly.");
        } catch (FullStopError e) {
            System.out.println("You have forgot to use the full stop.");
        }
        for (int i = 0; i < k - 1; i++) {
            String tmp = "";
            for (int j = i; j < k - 1; j++) {
                if (ar[j].length() > ar[j + 1].length()) {
                    tmp = ar[j];
                    ar[j] = ar[j + 1];
                    ar[j + 1] = tmp;
                }
            }
        }
        for (int i = 0; i < k; i++) {
            System.out.print(ar[i]);
            if (i < (k - 1)) {
                System.out.print(" ");
            } else
                System.out.print(".");
        }
    }
}

class NullError extends Exception// If someone asks me what is name or purpose
                                    // of defining this class what should I
                                    // tell?
{
    public NullError() {
    }
}

class CaseError extends Exception {
    public CaseError() {
    }
}

class FullStopError extends Exception {
    public FullStopError() {
    }
}

例如,如果我編寫此代碼。

擴展Exception類的類的名稱是什么?它被稱為抽象類,它的用途是什么?

這段代碼按照字母數量的升序排列句子中的單詞,我實現了一些自定義異常,這些異常將被強制拋出,例如沒有句號。 要引發新的異常,我們需要定義一個單獨的具有相同名稱的類。 我不明白此類的名稱是什么,它是一個抽象類,它的用途是什么,因為我僅為該類定義了一個空的構造函數。

不,這不稱為抽象類

擴展Exception的類可以稱為用戶定義的已檢查異常。 您可以在http://docs.oracle.com/javase/tutorial/essential/exceptions/creating.html中找到有關此主題的更多信息。

眾所周知, 抽象類是完全不同的東西,與異常無關。 有關的更多信息: http : //docs.oracle.com/javase/tutorial/java/IandI/abstract.html

希望有幫助! :)

您編寫的是一個自定義異常,它是用戶定義的異常。 這些是與您的業務邏輯有關的例外。 這些異常類可以從您的業務邏輯中拋出。 當存在具有引發這些異常的方法的公共類時,這些方法很有用。 使用這些公共方法的其他類可以選擇捕獲異常並根據異常(如記錄異常)執行操作,也可以再次引發相同的異常。

使用用戶定義的異常的這種方式有助於模塊化類的開發人員不必理會如何處理異常。 異常的處理取決於調用已簽名的方法的類。

您看不到用戶定義的異常的重要性,因為您只有一個類,並且拋出甚至捕獲了異常。

要創建自定義/自我例外:

public class customException extends Exception { 
  String message = "Your Custom Exception"
 public customException() {
    super(message);
}

}

它是擴展父類的常規類(Exception)。 要強制拋出並捕獲您的自定義異常:

try
{
   throw new customException();
}     

catch (customException e) 
{
   System.out.println(e);
}

然后,您的代碼將打印您的異常。

抽象類:不,它不是抽象類。 該文檔定義了抽象類: http : //docs.oracle.com/javase/tutorial/java/IandI/abstract.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM