try {
// 예외가 발생할 수 있는 코드
} catch (ExceptionType e) {
// 예외를 처리하는 코드
// 오류 메시지를 로깅하거나 사용자에게 알림 등
}
// catch 블록 이후의 코드는 예외가 발생하더라도 계속 실행
try {
// 예외가 발생할 수 있는 코드
} catch (ExceptionType e) {
// 예외를 처리하는 코드
} finally {
// 예외 발생 여부와 관계없이 실행되는 코드
}
try (ResourceType resource = new ResourceType()) {
// 자원을 사용하는 코드
} catch (ExceptionType e) {
// 예외를 처리하는 코드
}
throw new Exception("이것은 예외를 발생시킵니다.");
public void readFile(String fileName) throws IOException {
// 여기서 IOException이 발생할 수 있는 코드 (예: 파일을 열려고 시도하는 코드)
}
public void handleUserInput() {
try {
// 입력을 읽는 코드, 여기서 IOException이 발생할 수 있음
} catch (IOException e) {
// 로그 남기기
// 사용자에게 오류 메시지 표시
// 필요하다면 사용자로부터 다시 입력 받기
}
}
java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference
at com.example.MyClass.myMethod(MyClass.java:10)
at com.example.Main.main(Main.java:5)
public class InputValidator {
// 중복 로직 메서드로 분리
public static void validateInput(Map<String, String> input, Map<String, String> data, String... keys) {
for (String key : keys) {
if (CheckUtil.isEmptyOrNull(input.get(key))) {
throw new CustomException(getCustomExceptionMessageForKey(key));
}
}
}
// 메시지 매핑
private static String getCustomExceptiontMessageForKey(String key) {
Map<String, String> customExceptionMessages = new HashMap<>();
customExceptionMessages.put("USER_ID", "회원 아이디가 입력되지 않았습니다. 입력 항목은 USER_ID 입니다.");
customExceptionMessages.put("USER_PW", "회원 비밀번호가 입력되지 않았습니다. 입력 항목은 USER_PW 입니다.");
customExceptionMessages.put("USER_NM", "회원 이름이 입력되지 않았습니다. 입력 항목은 USER_NM 입니다.");
// 그 외 오류 메세지 추가
return customExceptionMessages.getOrDefault(key, "필요한 값이 입력되지 않았습니다.");
}
public static void validatePasswordEquality(Map<String, String> input) {
if (!input.get("USER_PW2").equals(input.get("USER_PW"))) {
throw new CustomException("비밀번호와 비밀번호 확인이 일치하지 않습니다.");
}
}
public static void validateEncryptedPasswordEquality(Map<String, String> input, Map<String, String> data) {
String checkPassword = Encrypt.sha256Encode(input.get("USER_PWCHK"));
if (!checkPassword.equals(data.get("USER_PW"))) {
throw new CustomException("비밀번호가 다릅니다. 올바른 비밀번호를 입력해주세요. 입력 항목은 USER_PWCHK 입니다.");
}
}
}
public class Service {
public void createUser(Map<String, String> input) {
InputValidator.validateInput(input, "USER_ID");
InputValidator.validatePasswordEquality(input);
//그 외 로직
}
}
public class Service {
public void createUser(Map<String, String> input) {
try {
InputValidator.validateInput(input, "USER_ID");
InputValidator.validatePasswordEquality(input);
} catch (CustomException e) {
System.out.println(e.getMessage()); // 예외 메시지를 출력
// 필요한 추가적인 오류 처리
}
// 'try-catch' 블록 이후의 코드는 예외 발생 여부와 상관없이 실행
System.out.println("프로그램은 계속 실행됩니다.");
}
}
public static String sha256Encode( String password ) {
try {
MessageDigest md = MessageDigest.getInstance( "SHA-256" );
byte[] digest = md.digest( password.getBytes( StandardCharsets.UTF_8 ) );
return bytesToHex( digest );
} catch ( NoSuchAlgorithmException e ) {
throw new RuntimeException( e );
}
}
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.GeneralSecurityException
java.security.NoSuchAlgorithmException