例外は、プログラム内のいくつかのエラーですが、すべてのエラーは、異常と間違っ時には避けられているわけではありません。
例えば、あなたのコードより少ないセミコロンは、結果が出て実行されているヒントがでjava.lang.Error間違っている、あなたがするSystem.out.println(11/0)を使用する場合は、除数0で行っているので、あなたはありますそれはjava.lang.ArithmeticException例外がスローされます。
Javaの例外は、次のカテゴリに分かれています。
- 例外をチェック:チェック例外の最も代表的には、それは予測不可能なプログラマユーザー・エラーや問題が原因例外です。たとえば、あなたは、例外が単にコンパイル時に無視することはできない、例外が発生し、存在しないファイルを開きたいとき。
- 実行時例外の異常は、実行時例外を回避するために、プログラマである可能性が高いです。異常の検査とは対照的に、例外は、コンパイル時の実行時に無視することができます。
- エラー:エラーが異常ではありませんが、プログラマから問題を制御します。エラーは通常、コードでは無視されます。例えば、スタックオーバーフローは、エラーが発生した場合、それらはコンパイル時にチェックすることができません。
すべての例外クラスは、のjava.lang.Exceptionクラスから継承するサブクラスです。例外クラスはThrowableクラスのサブクラスです。また、例外クラスでは、Throwableのエラーのサブクラスがあります。以下にそれらの間:
例外では、例外が配らプログラムが実行され続け継承Exceptionクラスから処理することができます。Errorクラスを継承することは間違っているエラーは、実行時に処理できない、あなただけのコードのロジックを変更することができます。例外は、そのような例外は、ランタイムクラスから継承されたプログラムは、それが処理できない実行されている中で処理することができます。例外は、コードではなく、実行している中で処理する必要があります。そうしないと、コンパイラは文句を言うでしょう。
方法でJavaの例外処理
メインに扱うJava例外は次のとおりです。
- 使用すると、
throw
指定されたメソッドで指定された例外をスローします。例えば、throw IOException();
それは、IO法に例外をスロー - 使用する
throws
例外は呼び出し側プロセスにスローされます。関数宣言で使用されます。複数の例外の継承が存在する場合メソッドの宣言は、複数の例外を投げることができる場合は、あなただけの親クラスに例外をスローする必要があります。親クラスが例外をスローしない場合は、サブクラスの祖先メソッドを書き換える場合、スローこのように使用することはできません try...catch
例外を処理します。
トライ例外処理を使用する場合は注意する必要があります。
- 複数の例外がある場合は捕獲され、異常間の継承関係キャッチ、あなたは後ろにEDITORIALクラス、親クラスを処理する必要があります
例外一般的な方法
Throwable
これは3つの例外処理方法を定義します。
String getMessage()
:異常なリターンの詳細については、String toString()
:例外簡単な情報を返します。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{
//关闭交易通道
}