Javaの基礎18(異常)

異常な


何が異常なのですか?
問題がある異常の実行中に発生した
、私たちが学ぶ前に、より一般的な異常のいくつかをまず見てのが検出されました

  • 範囲外の配列の添字
    は、ArrayIndexOutOfBoundsException

  • nullポインタ例外
    NullPointerExceptionが発生

  • スタックオーバーフロー例外
    にStackOverflowError

  • ヒープオーバーフロー例外
    OutofHeapError

  • キャスト異常
    にClassCastException

  • 数学例外
    はArithmeticException

  • データ変換異常
    はNumberFormatException

私たちは、例外、いくつかのエンディングエラーと例外の一部の端部がエラーを終了エラーと呼ばれ、異常と呼ばれるエンディングという違いを見てみました:

  • 例外:例外は、プログラムの実行中に発生した、それは通常、治療の標的とすることができます。
  • エラー:エラーがプログラムの実行中に発生した、それは通常のアプローチを対象としません。エラーの発生は、JVMのJVMとフィードバックがなく、治療のために、コードのみを変更することができ、多くの場合、システムレベルの問題が発生しているシステムです。例えば、スタックオーバーフロー例外にStackOverflowErrorヒープオーバーフロー例外上記OutofHeapErrorない治療のために。

我々は異常な例外を思考のオブジェクト指向の方法を扱う場合には何が必要?名位置上の理由から、このような例外を見てクラスとして扱うことができます!プログラムは、異常なサブクラスであるさまざまなエラーを持って、このような異常継承システムは、システム内のトップレベルの異常になりますもちろん、それはまた、究極の親オブジェクトの、のThrowableです。

異常なアプリケーション

プログラミングする場合、それはプログラムの状況を考慮しなければなりません。関数を記述する場合たとえば、あなたはパラメータ、利用機能で受信された使用パラメータを受け入れるために必要な法的ていない場合は、あなたの合法的なデータのパラメータを決定する最初の必要性、合法的に来てデータを転送し、発信者を教えてください。そして、この方法では、発信者に伝えるために例外を使用する必要があります。だから、手続きの定義は、プログラムの堅牢性を検討します。

問題は、関数の内部で発生する一般的には、2つのソリューションのアイデア

  1. どちらの内部機能自体は
    正常な結果に戻ります
  2. どちらの機能は、発信者に発行します
    スロー例外オブジェクト

どのようにそれが異常な使用するには?

  1. 例外オブジェクトを作成します。いくつかのヒント(カスタム)パッケージ。

  2. このオブジェクトは、呼び出し側に通知する必要があります。どのようにそれを通知するには?どのようにこのオブジェクトは、それを呼び出し側に渡されますか?キーワード投げることで完了します。例外オブジェクトを投げる;など:新は、ArrayIndexOutOfBoundsException(「エラー添字」)を投げます。

  3. 投げる、関数内で使用されるオブジェクトをスローし、機能を終了することができます。


異常分類

エラー
エラーの重大度は、コードを変更することを指示し、直接JVMメモリエラーがスローされます

例外は、例外
機能例外の中にスローされますが、文法を確認しながら、コンパイラエラーが発生したため、コンパイルに失敗しました。プログラムは、このプログラムでは、リスクがあることがジャワ自体、問題となっていた、我々は(知ってもらうために、あなたのいずれかの問題に対処、または問題の特定のコールアウト)、それをキャプチャするかを宣言する必要があります

異常のRuntimeException
のRuntimeException外に盛り付け、キャプチャする必要はありません、それを宣言していませんか?異常な機能自体は起きていないが、呼び出し元のパスをパラメータので、このようなエラーは、機能的に失敗につながります。また、これは問題であり、例外を通じて反映させる必要がありますが、異常アウトこれを宣言しないでください。目的の声明では、処理のために、発信者をさせることです。目的は、呼び出し側が、それは、発信者が現象を見て、そしてコードを修正するために聞かせて、プログラムを停止させることである、治療すべきでないことを宣言することではありません。

異常な二つのタイプ

  • 異常コンパイル:コンパイラが異常を検出しました。
  • 実行時例外:コンパイラが異常を検出しません。宣言する必要はありません。声明缶は、宣言した場合、以下、発信者が治療を受けている聞かせてより何物でもありません

コンパイル時の例外は、通常、2つの治療の選択肢を持っています

  1. 免責事項:呼び出し元に報告書のうち、アイデンティティの問題。異常、およびコンパイラのスロースローで関数内でキャッチされない、それはスローで宣言されなければならない場合は、に対処するための発信者をしましょう。
  2. キャプチャ対象の異常の文でJavaの。
    キャプチャフォーマット:
try
{
        //需要被检测的语句。
}
catch(异常类 变量)//参数。
{
        //异常的处理语句。
}
finally
{
        //一定会被执行的语句。
}

投げるとの違いをスローします

  1. 関数内で使用投げます。スローに使用する機能。
  2. thorw例外オブジェクトがスローされます。スローのための例外クラスは、例外クラスは、コンマで区切って、複数持つことができた後、宣言しました

最終的には使用
にかかわらず、例外が発生するかどうかのいくつかの特定のコードを、我々は実行する必要があります。プログラムが異常なジャンプにつながるので、いくつかの到達不能文で結果。ニーズに応えることができない
需要を。扱うときにソリューションを提供キャッチJavaの例外が、最終的にこの問題を解決することであり、このコードブロックが格納されたコードが実行されます。

異常詳細

最後にキャッチしてみてください 組み合わせ
トライキャッチ組成を:異常検出のためのコード、および異常の検出は、キャッチ・プロセスに送信されます。例外トラップハンドラ。

void show()//不用throws
{
  try{
    throw new Exception();
  }catch(Exception e)
  {
//处理方式
  }
}

最終的に組み合わせてみてください、彼らはまた、デフォルトのJVMがスローされますので、異常が、キャッチした後に検出されないがあるので、コードの異常検出を:。例外は、プロセスキャッチされていない
のを。しかし、関数は、リソースオンになっているすべての最後に、閉じられる必要があります。ただ、リソースオフ。
空のショー()//必要がスローされます

{
  try{
  throw new Exception();
  }finally
  {
    //关闭资源
  }
}

最後にキャッチの組み合わせを試し、異常を検出し、キャッチプロセスに渡され、リソースの解放を定義します。

发布了70 篇原创文章 · 获赞 56 · 访问量 1991

おすすめ

転載: blog.csdn.net/qq_43624033/article/details/103486621