RuntimeExceptionのトラブルについて
- try-catch文でRuntimeExceptionが発生する場合のトラブルについて質問します。
- try-catch文で発生するRuntimeExceptionの種類について教えてください。
- catchで例外クラスがExceptionではなくRuntimeExceptionであるトラブルについて説明してください。
- ベストアンサー
RuntimeExceptionであるかの判断
以下のようなtry-catch文(抜粋)があった場合について 質問します。 try{ String[] array = {"A","B","C"}; System.out.println(array[3]); } catch(RuntimeException e){ System.out.println("RuntimeException発生"); } 今回はtryで配列に関する記述がされていますが、 その他のトラブルを想定して記述が行われることもあると思います。 catchで例外クラスがExceptionではなく、 RuntimeExceptionである場合、 どのようなトラブルがRuntimeExceptionに当たるのか わからないでいます。 教えて頂けるでしょうか?
- Java
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
RuntimeExceptionのJavaDocにRuntimeExceptionを継承した例外クラスが書いてありますので、そちらを御覧ください(数が多いので) https://docs.oracle.com/javase/jp/8/docs/api/java/lang/RuntimeException.html ちなみにその記述例のコードだとIndexOutOfBoundsExceptionでしょうかね
その他の回答 (1)
- UmeRabbit
- ベストアンサー率37% (15/40)
RuntimeExceptionを和訳すると実行時例外となります。 NullPointerExceptionやIndexOutOfBoundsExceptionなど、そのプログラムを実行しているときのデータの状況によって起きたり、起きなかったりする例外のことを指します。
補足
UmeRabbit さん、回答ありがとうございます。 ただ、UmeRabbit さんの回答は、弱冠、的外れなことがあるようです。
関連するQ&A
- 例外処理がまったくわかりません!!
下のプログラミングについていくつか質問があります。 (1)etest()メソッドってなんですか? (2)存在しないファイルを開くってどういうことですか? (3)FileReader( )対応catch節、Close( )対応catch節ってなんですか? (4)あと、プログラミングあとの本の解説の部分がよくわかりません。抜粋してみます。 「一般的な例外クラスはxxxExceptionというクラス名をしています。このタイプの例外クラスはみな「Exception例外クラス」をスーパークラスにしています。この場合、「catch(Exception e)」を使うとすべてのxxxException例外を補足できるという仕様になっています。ですから下のetest( )メソッドは次のように、ひとつのcatch節で記述することができます。このようにしても表示される4エラーメッセージ(eで指示)は、正しく発生例外(FileNotFoundExceptionまたはIOException) 対応のものになります。」 public static void etest( ) { try { // try節を書く FileReader fr = new FileReader("xfile.txt"); } catch (FileNotFoundException e) { // FileReader( )対応catch節 System.out.println("例外1: " + e); // 例外情報を表示 return; // 戻る } catch (IOException e) { // Close( )対応catch節 System.out.println("例外2: " + e); // 例外情報を表示 return; // 戻る } System.out.println("ファイルは正しくオープンされました"); } } よろしくお願いします。
- ベストアンサー
- Java
- [JAVA]try 内の変数を外で!?
お世話になります! try{ int rsCount = ... ... }catch(Exception e){ ... } out.println(rsCount); とした場合、初期化されていない可能性があるとかで使えません。 try catch 内で定義したものは使えないのですか?? 反対に、どうすれば解決できますか?
- ベストアンサー
- Java
- throw文について
上と下のソースプログラムがよく似ているのにもかかわらず上記のプログラムでコンパイルエラー発生する理由がわかりません。 解決方法はpublic static void badMethod()throws IOException{に書き換えるということが分かっていますがイマイチ理屈が分からない次第であります。 たぶん、上記のプログラムはimport文があるからだと思うのですが回答のほどよろしくお願い致します。 (コンパイルエラー) import java.io.IOException; class TryCatch{ public static void main(String args[]){ try{ badMethod(); System.out.println("A"); } catch(IOException ex){ System.out.println("B"); } catch(Exception e){ System.out.println("C"); } System.out.println("E"); } public static void badMethod(){ throw new IOException(); } } (コンパイル正常) public class X{ public static void main(String args[]){ try{ badMethod(); System.out.println("A"); } catch(Exception ex){ System.out.println("B"); } finally{ System.out.println("C"); } System.out.println("D"); } public static void badMethod(){ throw new RuntimeException(); } }
- 締切済み
- Java
- 他ファイルで定義された自作例外の受け方
他ファイルで定義された自作例外の投げ方と受け方を 教えて下さい。 // ------ Class.java ---> import java.io.*; public class Class1 { static Class2 oClass2; public static void main (String[] args) { try { oClass2 = new Class2(); System.out.println("main"); oClass2.vfFunc(); } catch (MyException e) { System.out.println("catch MyException"); } catch (Exception e) { System.out.println("catch Exception"); } } } // <------ Class1.java --- // ------ Class2.java ---> import java.io.*; public class Class2 { public Class2() { System.out.println("Class2コンストラクタ"); } public void vfFunc() { System.out.println("Class2 vfFunc"); throw new MyException(); } public class MyException extends Exception { public MyException() { System.out.println("MyException"); } } } //<------ Class2.java ---
- ベストアンサー
- Java
- Oracleに接続すると、それ以降の処理を素通りしてしまう
下記のようなメソッドで<1><2>の後、すぐに<7>に処理をしてしまいます。 <1>~<7>と動くと思っていたのですが、<3>~<6>が全て無視されます。 どこか問題があるのでしょうか? ちなみに、<1>で無効なURLを指定するとSQLExceptionでcatchされます。 try { Class.forName("oracle.jdbc.OracleDriver"); try { //<1> conn = DriverManager.getConnection (URL, UID, PSW); //<3> System.out.println("Oracleと接続しました"); } catch (SQLException e) { System.out.println("oracle接続エラー"); } catch (Exception e) { System.out.println("oracle接続エラー"); } //<4> try { //<5> stmt = conn.createStatement(); //<6>sql文の作成 // select文の実行 //(略) } catch (Exception ex3) { System.out.println("なんかエラーです"); } } catch (Exception e){ System.out.println("その他エラーです"); //<2> } finally { //特になし } //<7> return list;
- ベストアンサー
- Java
- Exceptionクラスの継承について
Exceptionクラスを継承しているExceptionMがありますが、その中にsuper(message)というものがあります。 これは、スーパークラスのExceptionがmessageという変数を引数で受けることができるメソッドを使用していることは分かりますが、実際何を行っているのでしょうか? そして、この処理によって何を得ているのでしょうか? あと、try{のなかにtry{という変な記述していますが、問題でそうかかれていただけなので気にしないでください。 問題箇所 class ExceptionM extends Exception{ public ExceptionM(String message){ super(message); } } 全ソース class ExceptionSubclassQuestion{ public static void main(String args[]){ a(); } static void a(){ try{ try{ throw new ExceptionM("M"); }catch(ExceptionN e){ System.out.println("lnner catch"); e.printStackTrace(); } }catch(ExceptionM e){ System.out.println("Quter catch"); e.printStackTrace(); } } } class ExceptionM extends Exception{ public ExceptionM(String message){ super(message); } } class ExceptionN extends ExceptionM{ public ExceptionN(String message){ super(message); } }
- ベストアンサー
- Java
- phpの例外処理がエラーをトラップしてくれない。
以下のように例外処理を記述しした場合、 try{ //ここでエラー } catch (Exception $e){ $ErrorMsg="その他エラー:".$e->getMessage(); } tryの中で、0除算によるエラーが発生してもエラーをトラップして、例外 処理のcatchに飛びません。 どのように記述すればエラーをトラップできるのでしょか?
- ベストアンサー
- PHP
- 呼び出し側ってなんですか?
下に抜粋した本の解説の部分がわかりません。「呼び出し側」ってなんですか? -------------------------------------------------- このプログラムのetst( )メソッドでは、スロー宣言「throws FileNotFoundException」が行われます。 記述(1)でエラーが発生したら、その情報を呼び出し側に送り、そこでetst( )の処理は終わりになるため、記述(2)は実行されません。記述(1)でエラーが発生しなかった場合は、記述(2)が実行されます。 import java.io.*; public class JcReig3 { // JcReig3.java [java] public static void main(String args[]) { try { etst(); } catch (FileNotFoundException e) { // 呼び出し側でcatch節を書く System.out.println("例外発生: " + e); } } // こちらはthrows宣言を書く public static void etst() throws FileNotFoundException { FileReader fr = new FileReader("xfile.txt"); // (1) System.out.println("正しくオープンされました"); // (2) } }
- ベストアンサー
- Java
お礼
ありがとうございます! 参考になりました!