나는 응용 프로그램이 그렇게 할 이유가 예외가 발생하기 때문에 경우에 일반적으로 당신이 원하는 것을 더 의미 대부분의 경우하지 않습니다 생각 그 이유는 거의 항상 가짜 데이터로 인해 발생할 수있는 후속 오류로 인해 예외가 throw 된 메소드의 정상적인 제어 흐름을 계속 수행하려는 의도가 이 아니며이 포함되어 있습니다.
if(arg == null)
throw new Exception("exception");
// We magically neutralise the exception and are here with arg == null
arg.someMethod(); // NullPointerException
double x = 11.0/Integer.parseInt(arg); // NumberFormatException
anotherMethod(arg); // might throw exception if arg == null
당신이 내 포인트를받을 수 있나요 : 예를 들어, 당신은 이런 식으로 뭔가를 할 것입니다 코드에서 throw
및 코드의 다음 줄을 무엇을 중화 할 수 있다면? 당신은 제어 흐름을 계속함으로써 헤아릴 수없는 위험을 무릅 쓰고, 당신이 할 수 있다고 가정합니다. 이제 대안은 무엇입니까?
- 우리가 당신
null
의 값이 여기에 어떤 해를하지 않습니다 정확히 알고 가정하자. 그런 다음 after() throwing
조언을 통해 예외를 잡는 것이 가장 좋은 이유는 무엇입니까?
null
이 해롭고 알고있는 경우 예외를 피하기 위해 메서드 실행을 가로 채고 매개 변수를 덮어 쓰지 않는 것이 좋습니다.
- 메쏘드의 내용이 블랙 박스라고 가정하고 여기에 해킹하는 것을 시도하고 있다면
around()
조언을 사용하고 다른 값을 가진 proceed()
을 여러 번 호출 할 수 있습니다 (예 : 일부 인증 토큰 또는 비밀번호) 호출 된 메서드가 더 이상 예외를 throw하지 않을 때까지.
실제로 알 수 있듯이 문제가 무엇이고 달성하고자하는 바에 따라 실제 문제를 해결할 수있는 방법은 다양합니다.
는 모든 일이 지금 우리가 초기 기술 질문를 잡는하지
의로 돌아 하게 말했지만, 실제로 즉 어떻게 든이 전혀 발생되는 피해, 예외 중화 가졌어요. AspectJ 언어에는 원하는 것을하기위한 기술적 수단이 포함되어 있지 않기 때문에 (감사합니다!)를 사용하면 Java 클래스 파일을보다 낮은 수준의 방식으로 조작 할 수있는 다른 도구를 볼 수 있습니다. 나는 그 (것)들을 결코 사용하지 않았다, 그러나 나는 당신이 BCEL 또는 Javassist를 사용하여 당신이 원하는 것을 할다는 것을 확실하다.
또는 try/catch로 진행할 수 있습니다. 조금 더 짧을거야. – alehro