#例外:
プログラム開発中に発生する異常事態は例外です。たとえば、除数が 0、パラメータが null、メンバー変数またはパラメータのメソッドが呼び出され、配列の添え字が範囲外です。
例外は 2 つの主なタイプに分類されます。
(1)例外: プログラマーは解決できます: null ポインター、除数が 0、配列の添字が範囲外。
(2) エラー: プログラマが解決できないもの: メモリ オーバーフローなど。
Throwable は、これら 2 つの型の親クラスです。
例外分類:
コンパイラがチェックするかどうかによる分類:
非检查性异常:也称之为运行时异常,即编译器在检查语法期间,不做异常检查。
检查性异常:也称之为编译时异常,此时,编译器会强制检查语法中的异常情况。如有异常,在编译期需要做异常处理。
ログイン後にコピー
例外構造:
RuntimeException:
NullPointerException
ArrayIndexOutOfBoundsException
ClassCastException
IllegalArgumentExcetion
NumberFormatException
IOException:
EOFException
FileNotFoundException
ログイン後にコピー
例外処理:
(1) 例外が発生した場合、プログラムを終了します。
(2) 例外が発生すると、処理メカニズムを使用して例外を処理します。プログラムを終了する必要はありません。
体验度:尽可能的选择异常处理机制。
ログイン後にコピー
例外処理の仕組み:
基本的な考え方:
例外が発生する可能性のあるコードブロック領域を確認し、例外情報が発生した場合はその情報をカプセル化します。特定の例外タイプのオブジェクトを取得し、それをキャプチャして処理します。
関連する推奨事項: "
FAQ"
try{
可能出现异常的代码块
/*如果有异常,jvm会将异常信息,封装成对象
将地址信息赋值给catch中的形参
*/
}catch(Exception e){
进行处理e
}
ログイン後にコピー
複数の catch ステートメント ブロック:
例外オブジェクトをキャプチャしようとするとき、異なる処理を行うときは次のようにします。例外オブジェクトを個別に使用するには、複数の catch ステートメント ブロックを使用する必要があります。
注: try で例外メッセージが発生した場合、try のコード ブロックの後続の部分は実行されません。対応するキャッチコードブロックを入力して処理を実行します。
複数の catch ステートメント ブロックの場合、catch によって処理される例外タイプを記述する順序:
最初にサブクラスの例外タイプを記述し、次に親クラスの例外を記述します。
throw: throw キーワード。このメソッドで発生した例外は try-catch では処理されません。
代わりに、処理のために呼び出し元にスローされます。 throw キーワードを使用する必要があります。
throws: 例外キーワードを宣言します。通常、呼び出し元に通知するメソッドの定義で使用されます。
(1)当throw的异常对象为检查性异常,方法上必须throws此异常类型。
(2)如果throw的异常对象为非检查性异常,方法上不必throws此异常类型。
ログイン後にコピー
メソッドを書き換えるときのスローの使用法
可能:
(1)可以相同。
(2)可以是部分。
(3)异常的子类型可行,也可以是多个子类型。
ログイン後にコピー
実現不可能:
(1)不同的异常类型,也不可以多声明不同类型的异常类型。
(2)异常的父类型不行。
ログイン後にコピー
最終的に:
は、try-catch の統合された出口を提供します。 try ステートメント ブロックと catch ステートメント ブロックで例外が発生したかどうかに関係なく、finally のコード ブロックは最終的に実行されます。
通常、一部のリソースを閉じるなどの操作を処理するために使用されます:
例: ファイルの読み取り時や一時ファイルの削除時に操作を閉じる
finally ステートメント ブロックはオプションです。
ステートメントにリターンがある場合は、最初に順次実行します。リターンが発生した場合は、最初に戻り値を一時停止し、最後にコード ブロックを実行してから、リターンを実行します (リターンがない場合)。最終的に、返品は処理されません。値は影響します)
以上がAPIインターフェースが異常な場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。