이 질문은 여러 번 물어 보았습니다. 나는 포럼에서 RegEx에 관한 거의 모든 게시물을 읽고 솔루션을 얻으려고 몇 시간 동안 노력했음을 확신합니다. 하지만 결국이 일이 천천히 그러나 확실히 나를 죽이고 있습니다! : D 도움을 주시면 감사하겠습니다.다중 행 RegEx 두 문자열 사이의 읽기
데이터베이스에 연결하려고 시도했지만 실행중인 db 엔진이 없으면 예상대로 connection refused
예외가 발생합니다. 하지만 알 수없는 이유로이 예외는 여러 번 중첩되어 있습니다 (나는 20 ..., 30, 40 ... ...) 횟수가 얼마나되는지 모르고 myException.getCause()
에 대한 호출은 매번 NULL을 반환합니다.
그 이유 때문에 전체 스택 추적을 사용자에게 표시하고 싶지 않기 때문에 정규식을 사용하여 기본 메시지를 잡는 것이 쉽고 쉽습니다. 불행히도 내가 기대했던 것만 큼 쉽지는 않습니다.
우선 스택 스택의 원치 않는 부분을 잘라내어 메시지를 제거하는 것이 좋은 해결책이라고 생각하십니까? 그리고 그렇지 않다면, 당신은 무엇을 제안합니까?
내 예외는 다음과 같습니다
EXCEPTION(\r?\n?.*?\r?\n?)*STACKTRACE
또는
EXCEPTION\s*\W*(.*|\r*|\n*)+STACKTRACE
하지만 아무것도 :
Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.ConnectException
MESSAGE: Connection refused: connect
STACKTRACE:
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.(Socket.java:434)
at java.net.Socket.(Socket.java:244)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
............. and so on ............
내가 예를 들어 EXCEPTION **
및 STACKTRACE
사이의 문자열을 얻기 위해 여러 가지 패턴을 시도 작동하는 것 같습니다. 사전
정규식에 대한 우수 사례지만 좋은 생각이라고 생각하지 않습니다. 'ArrayIndexOutOfBoundsException -1'을 이해할 수있는 사용자는 의미있는 메시지를 원한다면 멀티 캐치 블록을 사용하고 사용자에게 일반 정보를 보여줄 수 있습니다. 즉, 데이터 등을 파싱 할 수 없습니다. – HRgiger
@ Core-Update'myException.getMessage()'와'myException.getLocalizedMessage()'는 어떻습니까? 둘 다 NULL을 반환합니까? – Pons
@Pons'myException.getMessage()'를 사용할 때이 메시지 (전체 스택 추적)를 얻습니다. localizedMessage는 보통의 getMessage와 같은 것을 인쇄합니다. –