import org.aspectj.lang.JoinPoint;
//서비스하기전까지 예외 및 에러를 확인하려는 용도로 사용
public class AfterThrowingAdvice {
//발생한 예외자체를 바인딩 변수로 받아올수있음
//어떠한 예외가 발생할지 알수없으니 최상위 예외 클래스Exception을 받아옴
public void afterThrowingPrintLog(JoinPoint jp, Exception exceptObj) {
String methodName = jp.getSignature().getName();
System.out.println("횡단관심 : 예외가 발생해서 출력되는 로그");
System.out.println("횡단관심 : "+methodName+"에서 예외가 발생해서 출력되는 로그");
System.out.println("예외 메세지 : " + exceptObj.getMessage());
}
}
.getSignature : output 자체가 시그니쳐; 메서드 시그니쳐 말하는거임
이미 try-catch 처리가 되어있으면 호출 안함
Service 레이어에서 발생한 경우에만 advice와 결합 됩니다
DAO, SQL, ... xxxxx
의도적으로 에러가 발생해야 하는 레이어는 Service레이어임
변수명 :
그냥 obj는 임시 저장소 tmp같은거라는걸 암시
ㅁㅁㅁObj는 현재 이 로직에서 사용되고 있으며 앞으로도 두번 이상 쓸 용이가 있다
뭐라고 지어도 상관 없지만 남들과 소통 하기 편하게
Resolver류는 이름을 무조건 지어야 함
ㅁㅁㅁResolver
Checked exceptions represent errors outside the control of the program. For example, the constructor of FileInputStream throws FileNotFoundException if the input file does not exist.
Therefore, we should use the throws keyword to declare a checked exception:
private static void checkedExceptionWithThrows() throws FileNotFoundException {
File file = new File("not_existing_file.txt");
FileInputStream stream = new FileInputStream(file);
}
We can also use a try-catch block to handle a checked exception:
private static void checkedExceptionWithTryCatch() {
File file = new File("not_existing_file.txt");
try {
FileInputStream stream = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Common checked exceptions in java : IOException, SQLException and ParseException.
The Exception class is the superclass of checked exceptions, so we can create a custom checked exception by extending Exception:
public class IncorrectFileNameException extends Exception {
public IncorrectFileNameException(String errorMessage) {
super(errorMessage);
}
}
If a program throws an unchecked exception, it reflects some error inside the program logic.
For example, if we divide a number by 0, Java will throw ArithmeticException:
private static void divideByZero() {
int numerator = 1;
int denominator = 0;
int result = numerator / denominator;
}
Java does not verify unchecked exceptions at compile-time. Furthermore, we don't have to declare unchecked exceptions in a method with the throws keyword. And although the above code does not have any errors during compile-time, it will throw ArithmeticException at runtime.
Common unchecked exceptions in java : NullPointerException, ArrayIndexOutOfBoundsException and IllegalArgumentException.