only_throw_errors: Exception이나 Error를 상속한 클래스의 인스턴스만 던지세요

only_throw_errors: Exception이나 Error를 상속한 클래스의 인스턴스만 던지세요

throw로 던질 때 문자열 같은 걸 던져도 실제로는 동작하긴 해요. 하지만 그건 제대로 처리해야 할 것을 우회하는 꼼수인 경우가 많아요. only_throw_errorsException이나 Error를 상속한 클래스의 인스턴스만 던지라고 알려주는 린트(lint) 규칙이에요.

출처: only_throw_errors

본문

상세 설명

dart.core.Errordart.core.Exception을 확장한 클래스의 인스턴스만 던지세요. ErrorException을 확장하지 않은 인스턴스를 던지는 건 좋지 않은 습관이에요. 보통은 더 제대로 구현해야 할 것을 꼼수로 처리하는 경우가 많아요.

BAD:

void throwString() {
  throw 'hello world!'; // LINT
}

GOOD:

void throwArgumentError() {
  Error error = ArgumentError('oh!');
  throw error; // OK
}

활성화하기

only_throw_errors 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 only_throw_errors를 추가해요.

linter:
  rules:
    - only_throw_errors

대신 YAML map 문법으로 린터 규칙을 설정한다면, linter > rules 아래에 only_throw_errors: true를 추가해요.

linter:
  rules:
    only_throw_errors: true

더 알아보기