[TIL]JAVA-異常処理
💡Day 18異常処理
この文章は南宮星のjava定式3/eをもとに学習内容を整理した文章です.
クリーンアップソース:https://github.com/qudalsrnt3x/javaStandard
▼▼プログラムエラー
開発に誤りが出るのは当然だ.エラーが発生したので、どこが間違っているのかチェックできます.
プログラムの実行中に、何らかの原因で誤操作や異常終了を招くことがあります.この結果の原因をプログラムエラーまたはエラーと呼ぶ.
コンパイルエラーコンパイル時に発生したエラー
ランタイムエラー
論理は間違っているが,行為と意図は異なる.
Javaで作成された構文に合致しないコードは、コンパイラによってコンパイルエラー(compiletimeerror)としてフィルタリングされますが、例外的にコンパイルはよくできていますが、実行時に発生します.
例外クラス階層
Exceptionクラスとそのサブクラス-コンパイラチェック例外処理
사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
RuntimeExceptionおよびその子-コンパイラ検査異常処理X
주로 프로그래머의 실수에 의해서 발생하는 예외
▼▼異常処理
例外処理は、プログラムを実行するときに発生する可能性のある予期せぬ例外のコードを記述します.
プログラムの予期せぬ終了を防止し、正常な動作を維持することを目的としています.
try-catch文
public class ExceptionEx5 {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
try {
System.out.println(3);
System.out.println(0 / 0);
System.out.println(4); // 실행되지 않는다.
// try블럭에서 예외가 발생하면, 예외가 발생한 위치 이후에 있는 try블럭의 문장들은 수행되지 않는다.
} catch (ArithmeticException e) {
System.out.println(5);
}
System.out.println(6);
}
}
実行結果1
2
3
5
6
try blockに異常が発生した場合、異常発生位置後のtry blockの文は実行されません.public class ExceptionEx4 {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
try {
System.out.println(3);
System.out.println(4);
} catch (Exception e) {
System.out.println(5); // 실행되지 않는다.
}
System.out.println(6);
}
}
実行結果1
2
3
4
6
アレイの例外処理
public class Main {
public static void main(String[] args) {
String[] fruits = {"사과", "배", "포도"};
for(int i=0;i<5, i++)
System.out.println(fruits[i]);
)
}
配列要素のコードには、配列サイズより大きいインデックスでアクセスします.コンパイル時は問題ありませんが、実行時Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at day18.ExceptionTest1.main(ExceptionTest1.java:13)
ArrayIndexOutOfBoundsException異常.catchセクションの()で、発生した例外クラスを参照するためのパラメータeを作成します.
public class Main {
public static void main(String[] args) {
String[] fruits = {"사과", "배", "포도"};
try {
for(int i=0;i<5;i++)
System.out.println(fruits[i]);
}catch(ArrayIndexOutOfBoundsException e) {
// 예외 처리 코드 작성
System.out.println("배열 인덱스 범위 초과.");
}
System.out.println("###반드시 실행되어야 할 코드###");
}
}
実行結果사과
배
포도
배열 인덱스 범위 초과됐어요! 확인해보세요!
###반드시 실행되어야 할 코드###
printStackTrace()とgetMessage()
getMethod()例外クラスインスタンスに格納されているメッセージを取得できます.
public class ExceptionEx8 {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
try {
System.out.println(3);
System.out.println(0 / 0);
System.out.println(4);
} catch (ArithmeticException arithmeticException) {
arithmeticException.printStackTrace(); // 참조변수 arithmeticException 인스턴스에 접근할 수 있다.
System.out.println("예외 메시지 : " + arithmeticException.getMessage());
}
System.out.println(6);
}
}
実行結果1
2
3
예외 메시지 : / by zero
java.lang.ArithmeticException: / by zero
at Chapter08.day18.ExceptionEx8.main(ExceptionEx8.java:10)
6
異常をきたす
まず、演算子newを使用して、励起する例外クラスのオブジェクトを作成します.
Exception e = new Exception("고의로 발생시켰음");
throw e;
throw new Exception("고의로 발생시켰음");
🚩ソース例外クラス階層:https://joswlv.github.io/2018/10/29/java_exception/
Reference
この問題について([TIL]JAVA-異常処理), 我々は、より多くの情報をここで見つけました https://velog.io/@qudalsrnt3x/TIL-JAVA-예외처리exception-handlingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol