{Java:Exception(2)カスタム例外、強制異常、変換異常
クラスノートからコンテンツを抜粋し、李応秀先生の授業。のコメントおよび画像を参照してください.
自分で理解するために書いた文章であれば、不正確な点があるかもしれませんので、参考にしてください.
は、強制的に例外処理を実行する例外クラスを定義する. は、例外処理を強制しない例外クラスを定義する. 現在、ほとんどの人がUncheckedカスタム例外クラスが好きです.
作成方法 コンストラクタメソッドを定義する場合、親クラスのコンストラクタメソッドを呼び出すsuper()メソッド.
使用する必要があります. エラー情報に必要なメンバー変数を追加できます.
合成ターゲット アプリケーションに最適化された例外を定義できます.(Java提供とは異なる) アプリケーションの例外タイプを簡略化できます.
(カスタム例外タイプに統一可能) 例外のタイプを簡略化することができるので、最後の段階で例外に対するバッチ処理が簡単になる. 以上のエラーメッセージを表すことができます. エラーについてより正確な内容を伝えることができます.文法上の問題だけでなく、ビジネスロジック上の問題もメッセージに内容を書き、異常を引き起こす. 異常の処理は一つの場所に集中して行われるので、処理よりも適切な異常を発生させることが重要である. の目的の定義
快速識別 図面 を再コンパイルしても、同じデザインが異なると認識されないように、識別番号を変更しないでください. 💡 例外クラスの作成の意味
-String値を受信してメッセージとして保存する作成者
-Throwableインプリメンテーション可能なオブジェクトを受信し、結果として生じる例外を格納するコンストラクション関数があります.
メッセージと例外を引き起こすオブジェクトを格納できるように定義します.
この生成プロセスは、例外の内容を特定しません.
これは、基本的に例外オブジェクトを作成し、コンテンツを格納し、使用可能にするクラスの生成方法です.
ビジネスロジック上のエラー(パスワードの不一致、残高不足、ログイン失敗など)が発生した場合、強制的に異常が発生し、その機能を呼び出した側にエラーが発生したことを通知します. throw キーワードを使う. throwによって開始されたUnchecked例外オブジェクトは、個別に処理しない場合、次の呼び出し元として委任されます.△処理は強制ではなく、押し倒された.
実際に発生する異常ではなくカスタム異常を発生する . throw キーワードを使う. throw新規例外クラス(エラーメッセージ、実際に発生した例外) カスタム例外オブジェクトと実際に発生した例外(原因異常=原因)オブジェクトのすべての情報が出力されます. の複数の例外の処理と比較して、カスタム例外を1つだけ処理することを目的としている. 例外タイプ簡略化 では、エラーの部分がわかりやすくなります. カスタム例外ではなくcatchブロックでメソッドで発生した様々な例外をキャプチャできます. カスタム例外は、処理を必要としないように再記述されます. 実際に発生した異常に関する情報は、 causeパラメータ値によって伝達することができる. カスタム例外クラスを親クラスと複数のサブクラスに分け、catchは親クラス-カスタム例外クラスタイプとして定義-throw文でサブクラスを使用する場合に具体的な区分を行うことができます. 💡 変換例外
カスタム例外クラスは
したがって、戻り値ではなく戻り値のメソッドで異常が発生した場合、コンパイルエラーは発生しません.
ただし、if文に異常が発生した場合、if文がfalseの場合-戻り値がない場合-も考慮してください.
(if文内で異常が発生した場合、if文外で何も返されなかった場合はエラー)
開発は3つの階層に分かれています.
ビジネスロジックを実行する
発生した異常は、最終位置
自分で理解するために書いた文章であれば、不正確な点があるかもしれませんので、参考にしてください.
カスタム例外、強制例外、変換例外
📌 カスタム例外クラス
Checked
例外クラスの作成:Exceptionクラスを継承します.Unchecked
例外クラスの作成:RuntimeExceptionクラスを継承します.作成方法
使用する必要があります.
(カスタム例外タイプに統一可能)
public class HtaException extends RuntimeException {
private static final long serialVersionUID = 9175601348921699186L;
public HtaException(String message) {
super(message);
}
public HtaException(String message, Throwable cause) {
super(message, cause);
}
}
💡 serialVersionUIDSerializable
インタフェースの実装クラスは、serialVersionUID
として定義されるべきである.コンパイルエラーは発生しませんが、主にネットワークを介してオブジェクトを交換するために使用されるクラスの識別番号です.快速識別
Exception
クラス-String値を受信してメッセージとして保存する作成者
-Throwableインプリメンテーション可能なオブジェクトを受信し、結果として生じる例外を格納するコンストラクション関数があります.
Exception
またはRuntimeException
クラスを継承した사용자정의 예외클래스
もJavaライブラリの他の例外クラスと同様です.メッセージと例外を引き起こすオブジェクトを格納できるように定義します.
この生成プロセスは、例外の内容を特定しません.
これは、基本的に例外オブジェクトを作成し、コンテンツを格納し、使用可能にするクラスの生成方法です.
📌 強制異常発生
📌 変換例外
カスタム例外クラスは
unchecked
です.checkedの場合は、このような例外処理を行う必要があります.複数の例外を同じカスタム例外クラスにマージして渡すことを目的としています.try {
예외발생이 예상되는 코드 // SQLException 이 발생예상됨
} catch (SQLException e) {
throw new 사용자정의예외클래스("메세지", e);
}
public class CommonUtils {
public static int stringToInt(String text) {
if (text == null) {
// 사용자 정의 예외객체 발생시키기
throw new HtaException("text는 null일 수 없습니다.");
}
if (text.isBlank()) {
// 사용자 정의 예외객체 발생시키기
throw new HtaException("Text가 빈 문자열이거나 공백문자입니다.");
}
try {
int value = Integer.parseInt(text);
return value;
} catch (NumberFormatException ex) {
// 예외의 변환
// Integer.parseInt()메소드가 발생시킨 NumberFormatException을 catch에서 잡고, 대신 HtaException을 발생시키기
throw new HtaException("text에 숫자가 아닌 문자가 포함되어 있습니다.", ex);
}
}
}
💡 例外自体が発生すると、メソッドブロック内の「クイック終了」が発生します.したがって、戻り値ではなく戻り値のメソッドで異常が発生した場合、コンパイルエラーは発生しません.
ただし、if文に異常が発生した場合、if文がfalseの場合-戻り値がない場合-も考慮してください.
(if文内で異常が発生した場合、if文外で何も返されなかった場合はエラー)
📌 階層プログラミングにおける例外
표현계층 / 서비스계층 / 영속화계층
アプリケーション開発用開発は3つの階層に分かれています.
ビジネスロジックを実行する
서비스계층
(サービスクラス)では、実行中にビジネスロジックに違反した場合に異常が発生します.영속화계층
(DAOクラス、Repositoryクラス)は、特別なビジネスロジックを実行することなく、ビジネスロジックを実行するために必要なデータアクセス操作をサポートします.発生した異常は、最終位置
표현 계층
(Controllerクラス)で一括処理される.その前に委任を続行します.Reference
この問題について({Java:Exception(2)カスタム例外、強制異常、変換異常), 我々は、より多くの情報をここで見つけました https://velog.io/@yoondgu/Java-Exception-2-사용자정의-예외-강제-예외발생-예외의-변환テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol