class Chainable {
public Chainable doStuff(String test) {
return doSomething(test, true);
}
public Chainable doStuff(String test, String test2) {
String toUse = test + test2;
return doSomething(toUse, false);
}
private Chainable doSomething(String test, boolean version) {
// do something
if (somethingBadHappened) {
throw SpecialException.generate();
}
return this;
}
}
SpecialException
같은 기능을 가지고 던지는 것은 사용자가 참조하도록되어 예외입니다. 예외 메시지에는이 예외를 던진 메소드가 의도적으로 포함되어 있습니다. 사용자는 doSomething("x")
으로 전화를 걸고 실패하면 "Method 'doSomething' failed with the parameters: 'test = x | version = true'"
이 표시됩니다.
그러나 사용자는 doSomething(String, boolean)
메서드와 매개 변수에 신경 쓰지 않습니다. 그는 doStuff(String)
을 사용했으며 해당 기능에 대한 메시지를보고 싶어합니다.
은 그래서 내가 할 것은 :
새로운 예외의 원인으로 전자를 설정하고 올바르게"Method 'doStuff' failed with the parameters: 'test = x'"
가 (사용자가 스택 트레이스가 표시되지 않습니다 보여줍니다,하지만 난 디버깅해야 할 경우 내가 볼 수
public Chainable doStuff(String test) {
try {
return doSomething(test, true);
} catch (SpecialException e) {
throw SpecialException.generate(e);
}
}
정확히 무슨 일이 있었는지).
이제는 작동하지만 헬퍼 함수에 작업을 위임하는 새 함수를 작성할 때마다 스스로를 반복해야합니다. 문제는, SpecialException
이 생성 된 위치에 따라 메서드 이름을 찾기 때문에 어떻게 도우미 함수를 사용해야하는지 잘 모르겠다. ...
더 좋은 방법이 있나요?
두 번째 예외 생성을위한 e 매개 변수는 무엇입니까? – tbodt
예외의 원인입니다. 예외가 발생하는 곳을 알아 내기 위해 디버깅해야하는 경우에 그냥 나를위한 것입니다. (예 : 예외 원인 = new Exception(); . –