찾다

 >  Q&A  >  본문

java - 코드에서 RuntimeException을 직접 발생시키는 것이 권장되지 않는 이유는 무엇입니까?

Error, RuntimeException, Throwable 및 Exception과 같은 일반 예외를 사용하면 호출 메서드가 실제 시스템 생성 예외를 응용 프로그램 생성 오류와 다르게 처리하는 것을 방지할 수 있습니다.

비준수 코드 예

으아악

규정 ​​준수 솔루션

으아악
曾经蜡笔没有小新曾经蜡笔没有小新2706일 전1491

모든 응답(5)나는 대답할 것이다

  • 滿天的星座

    滿天的星座2017-06-30 09:58:07

    이해하기 쉽습니다.
    간단히 비유하자면, 用户不存在/密码错误... 这些错误类型, 如果你直接使用RuntimeException코드는 이렇게 작성해야 합니다. 으아악

    예외 잡기

    으아악


    반대로 사용자 정의 예외는 다음과 같이 구현됩니다.

    으아악

    예외 잡기

    으아악

    메시지를 통해 예외 처리 논리를 판단하는 데에는 많은 단점이 있습니다. 예를 들어 메시지가 동적이면 정확하게 처리되지 않습니다.

    물론 그럴 수도 있습니다. 일반적인 예외 유형을 정의하면 비즈니스 코드로 판단하는 것이 더 정확할 뿐만 아니라 예외 유형 정의도 줄어들고 코드 중복도 줄어듭니다. 현재 제가 사용하는 방식입니다.message判断处理异常逻辑有很多弊端, 比如message是动态的, 那将无法准确的处理.
    当然我们也可以定义一个通用的异常类型, 通过业务码去判断会更加准确, 同时也会减少异常类型的定义, 减少代码的冗余. 下面有一段kotlin 으아악

    회신하다
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-30 09:58:07

    설명이 꽤 명확해서 캡쳐하고 처리하기가 쉽네요

    회신하다
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-30 09:58:07

    예외 이름은 의미가 있어야 하며, RuntimeException 이름은 의미가 없습니다

    회신하다
    0
  • 怪我咯

    怪我咯2017-06-30 09:58:07

    Exception을 직접 던지면 Nginx가 정의된 메시지를 덮어쓰게 되어 특정 정보를 볼 수 없게 됩니다.
    권장되는 접근 방식은 예외를 직접 정의하고 RuntimeException을 상속하는 것입니다. 이렇게 하면 예외가 무엇인지 파악하고 문제를 더 쉽게 찾을 수 있습니다.

    회신하다
    0
  • typecho

    typecho2017-06-30 09:58:07

    런타임 예외는 포착할 필요가 없습니다

    회신하다
    0
  • 취소회신하다