Javaの例外処理を最初に学んだとき、親子クラスの方法は、親クラスの方法によってスローされる例外または子の例外のみを投げることができ、子クラスのコンストラクターは親クラスのコンストラクターの例外または例外をスローする必要があります。」当時、サブクラス方式がこのような例外をスローしなければならなかった理由を知りませんでした。後に、「Javaで考える」ことを学ぶことで、私は真実を理解しました。今、私はそれをレビューします。
1.サブクラスメソッドは、親クラスの方法または子どもの例外のみを投げることができます。
この制限のために、それは主にサブクラスが上向きの変換を受けているときに例外を正しくキャッチできないためです
パッケージThinkinginjava; public Abstract class inningdemo1 {public void walk()throws baseexception {} public abststract void sing()throws baseexception;} class baseexceptionは例外{} class subexception1を拡張する{} class class cupexceptionを拡張します{} {}パッケージThinkinginjava; public interface otherfunction {public void task()throws runtimeexception;}パッケージThinkinginjava;パブリッククラスのサブインニングデモ1はInningdemo1を拡張しますdemo1を実装します{//サブクラスメソッドは親クラスの例外@Override public void walk()throws baseexception {} //をスローすることができますが、親クラスではない例外は、例外を投げることができません。親クラスのメソッド@Override public void sing()throws subexception1 {} //この例を例に挙げてください。サブクラスのpublic void walk()にこの方法がある場合、Cupexception {}をスローすると、親クラスの方法が持たない例外がスローされます。親クラスの参照を使用して、子クラスを指します。
public void f(){inningdemo1 inn = new subinningDemo1(); inn.walk(); //親クラスがwalk()メソッドを呼び出すとき、それがcupexceptionを投げることを知らないので、f()メソッドは例外をキャッチする方法を知りません。したがって、編集期間中、サブクラス法は例外をランダムに投げることを防ぐ必要があります。 }上記の例から、サブクラス方式が例外をスローできないこともわかります
2。サブクラスコンストラクターは、例外またはその親例外をスローする必要があります。
これは、サブクラスコンストラクターがデフォルトで親クラスコンストラクターに追加されるためです。
パッケージThinkingInjava; public Abstract class InningDemo2 {public InningDemo2()Throws subexception {}} class fatherexceptionは例外{} class subexception {} class penexception {} class penexception {} {}}パッケージThinkingInjava;パブリッククラスのサブインニングデモ2はInningDemo2を拡張します{public subinningdemo2()throws fatherexception {//親クラスのコンストラクターはサブクラスコンストラクターにデフォルトで追加されるため、親クラスまたはその親の例外を例外として、// super(); }}3。異常損失
1。最終的に例外を投げると、スローされた例外が失われる可能性があります。
パッケージThinkinginjava; public class finallexception {public static void main(string [] args){try {try {throw new redexception(); }最後に{//前の例外をカバーしますnew BlueException(); }} catch(例外e){system.out.println(e); }}} class redexceptionは例外を拡張します{} class class blueexceptionは例外を拡張します{}ランニング結果:ThinkingInjava.blueException
2。最終的に戻ってくると、例外がスローされません
パッケージThinkingInjava; public class returnException {public static void main(string [] args){try {throw new Exception(); }最後に{return; }}}例外がスローされていることがわかりますが、実行中に出力はありません
上記の記事では、Javaの例外ハンドリング(父と息子の例外処理)について簡単に説明しています。私はそれがあなたに参照を与えることができることを願っています、そしてあなたがwulin.comをもっとサポートできることを願っています。