Frudy
3k
2019-05-28 10:16:33 작성 2019-05-28 13:30:01 수정됨
4
144

Java에서 예외메시지를 중첩시켜서 던지는 이유가 어떻게되나요?


AException: message

Caused by BException

Caused by CException

Caused by DException

이렇게 중첩되게 예외가 쭉 드는 경우가 있다고 했을 때,


오라클을 쓰던 스프링을 쓰던 Mybatis를 쓰던,


AException: message

Caused by BException

Caused by CException

Caused by DException 이렇게 띄워지는 예외가있으면..


AException: message nested excption is path.path.BException: message nested....(이하생략)

이렇게 에러메시지를 계속 중첩시켜서 띄우더라구요.


throw new DException("message", e);

throw new CException("message", e);

throw new BException("message", e);

이렇게 계속 예외를 중첩시키지 않고,
저렇게 error message옆에 nested 계속 붙여서 길~~~게 에러메시지를 만들까요?

이 고민을 해결해보기위해
"nested exception"
"getCause()" 라고 검색해도 안나와서,
"예외처리" 로 검색한 후 전반적으로 내용을 읽어보았으나.. 중첩관련 이야기는 없었습니다.
0
0
  • 답변 4

  • GAN
    1k
    2019-05-28 12:40:13

    본문이 이해가 잘 안 가지만 예외를 catch 한 메소드 사용법에 따라 해당 예외를 처리할 수 있다면 해당 메소드에서 catch 후 예외를 처리할 수 있는 사용법을 알려주는 예외를 발생시키면 되는거고 아니면 그냥 catch 하지 않고 넘겨서 메소드를 사용하는 사람이 처리하도록 하면 되는거 아닌가요?

    0
  • Frudy
    3k
    2019-05-28 13:32:58

    본문글 수정하였습니다.


    음... 예를 든다면..


    NoBuyException : 물건을 구매하지못했어요

    path.path.path.method(line);

    path.path.path.method(line);


    Caused by NoMoneyException : 돈이 없어요.

    path.path.path.method(line);

    path.path.path.method(line);


    이런 상황이 발생한다고 가정을하면,


    굳이 Mybatis나 다른 라이브러리 에서...


    NoBuyException : 물건을 구매하지못했어요 nested exception is NoMoneyException : 돈이없어요

    path.path.path.method(line);

    path.path.path.method(line);


    Caused by NoMoneyException : 돈이 없어요.

    path.path.path.method(line);

    path.path.path.method(line);


    자꾸 이렇게 앞에 nested를 붙이더라구요.
    그래서 예외가 길게 중첩된 경우에는 제일 위의 에러메시지가 엄~~~~청 길어져요.

    왜 굳이 이렇게 할까요?
    0
  • GAN
    1k
    2019-05-28 15:00:36

    그냥 예외 내용 전체를 읽기 전에 맨 위의 내용만으로 파악이 가능하도록 제일 위에 붙이는 거 아닐까요?

    0
  • Frudy
    3k
    2019-05-28 15:08:25

    GAN

    답변자님께서는

    예외 10개가 수직으로 스택트레이스에 찍히는거랑

    예외 10개가 맨위 예외의 에러메시지에서 nested로 길~~게 나열된거랑

    어느게 더 보기편하세요?


    다른분들도 그렇다면

    저도 저렇게 예외메시지를 찍도록 코딩을 해야하나 싶네요~~

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.