Javaの研究ノート(11) - 例外処理

例外は、プログラム内のいくつかのエラーですが、すべてのエラーは、異常と間違っ時には避けられているわけではありません。

例えば、あなたのコードより少ないセミコロンは、結果が出て実行されているヒントがでjava.lang.Error間違っている、あなたがするSystem.out.println(11/0)を使用する場合は、除数0で行っているので、あなたはありますそれはjava.lang.ArithmeticException例外がスローされます。

Javaの例外は、次のカテゴリに分かれています。

  1. 例外をチェック:チェック例外の最も代表的には、それは予測不可能なプログラマユーザー・エラーや問題が原因例外です。たとえば、あなたは、例外が単にコンパイル時に無視することはできない、例外が発生し、存在しないファイルを開きたいとき。
  2. 実行時例外の異常は、実行時例外を回避するために、プログラマである可能性が高いです。異常の検査とは対照的に、例外は、コンパイル時の実行時に無視することができます。
  3. エラー:エラーが異常ではありませんが、プログラマから問題を制御します。エラーは通常、コードでは無視されます。例えば、スタックオーバーフローは、エラーが発生した場合、それらはコンパイル時にチェックすることができません。

すべての例外クラスは、のjava.lang.Exceptionクラスから継承するサブクラスです。例外クラスはThrowableクラスのサブクラスです。また、例外クラスでは、Throwableのエラーのサブクラスがあります。以下にそれらの間:

Exceptionクラス

例外では、例外が配らプログラムが実行され続け継承Exceptionクラスから処理することができます。Errorクラスを継承することは間違っているエラーは、実行時に処理できない、あなただけのコードのロジックを変更することができます。例外は、そのような例外は、ランタイムクラスから継承されたプログラムは、それが処理できない実行されている中で処理することができます。例外は、コードではなく、実行している中で処理する必要があります。そうしないと、コンパイラは文句を言うでしょう。

方法でJavaの例外処理

メインに扱うJava例外は次のとおりです。

  1. 使用すると、throw指定されたメソッドで指定された例外をスローします。例えば、throw IOException();それは、IO法に例外をスロー
  2. 使用するthrows例外は呼び出し側プロセスにスローされます。関数宣言で使用されます。複数の例外の継承が存在する場合メソッドの宣言は、複数の例外を投げることができる場合は、あなただけの親クラスに例外をスローする必要があります。親クラスが例外をスローしない場合は、サブクラスの祖先メソッドを書き換える場合、スローこのように使用することはできません
  3. try...catch 例外を処理します。

トライ例外処理を使用する場合は注意する必要があります。

  • 複数の例外がある場合は捕獲され、異常間の継承関係キャッチ、あなたは後ろにEDITORIALクラス、親クラスを処理する必要があります

例外一般的な方法

Throwable これは3つの例外処理方法を定義します。

  1. String getMessage():異常なリターンの詳細については、
  2. String toString():例外簡単な情報を返します。
  3. void printStackTrace():印刷情報は、例外を呼び出します

これらの異常は、一般的に、例えば、キャッチが使用されている...してみてください

try
{
    //do something
}catch(Exception e){
    e.printStackTrace();
}

ついにキーワード

かかわらず、例外が発生するかどうかの、最終的にはコードが実行されます。一般的には、最終的には、このようなファイルオブジェクトのリリースとして、リソースを解放するためにコードを記述します。それは、最終的には復帰の実行順序を変更し、見返りに、見返りにようやく実行に続く関係なく注意すべきです

try{
    //do some thing
    return;
}catch(Exception e)
{
    return;
}
finally{
    return; //会执行这个 
}

return;

カスタム例外クラス

カスタムの異常に注意してください:

  • 例外クラスから継承しなければなりませんThrowableあなたがチェック例外を定義する場合、クラス、継承する必要のあるException異常を、あなたはランタイムを継承するように定義する必要がありますRuntimeException
class MyException extends Exception{
}

異常が1,000未満タイムズの引き出しの数は、利用者がATMを取るように要求されたときに、我々は、引き出しの例外を表し例外クラスを定義すると仮定し、次のように書くことができます

class TooLittleMoneyException extends Exception
{
    private int money;
    private String message;

    TooLittleMoneyException(int money){
        message = "" + money + "太少,请到ATM自助取款机去取";
    }

    String getMessage(){
        return message;
    }
}

//取钱方法
//打开交易通道
//校验账户是否合法
try{
    if (money < 1000){
        throw TooLittleMoneyException(money);
    }

    //取钱,并在对应账户中减少相应的金额
}catch(TooLittleMoneyException e){
    System.out.println(e.getMessage());
}finally{
    //关闭交易通道
}

おすすめ

転載: www.cnblogs.com/lanuage/p/11109281.html