avoid_catches_without_on_clauses 린트 규칙: on 절 없는 catch 피하기
avoid_catches_without_on_clauses 린트 규칙: on 절 없는 catch 피하기
catch 절에 on 절을 붙이지 않으면, 잡아내야 할 예외뿐 아니라 예상하지 못한 오류까지 잡아버릴 수 있어요. 이 린트 규칙은 on 없는 catch를 잡아내서 예외 처리를 더 안전하게 만들도록 도와줘요.
본문
설명
Effective Dart에서 제안하는 내용이에요.
on 절 없이 catch를 사용하지 마세요.
on 절 없이 catch 절을 사용하면 코드가 예상하지 못한 오류에 노출되고, 그 오류가 던져지지도 않아서(그래서 눈에 띄지 않고) 지나치기 쉬워져요.
BAD:
try {
somethingRisky()
} catch(e) {
doSomething(e);
}
GOOD:
try {
somethingRisky()
} on Exception catch(e) {
doSomething(e);
}
몇 가지 예외적인 경우는 허용돼요.
catch의 본문이 예외를 다시 던지는(rethrow) 경우.- 잡힌 예외가
Future.error,Completer.completeError,FlutterError.reportError의 인자, 또는 반환 타입이Never인 어떤 함수에 "직접 사용되는" 경우. - 잡힌 예외가
throw표현식에 직접 사용되는 경우.
이런 경우에 "직접 사용된다"는 것은 예외가 관련 코드 안에서(예를 들어 어떤 인자 안에서) 참조된다는 뜻이에요. 래퍼 예외를 만들기 위해 예외 변수가 관련 코드보다 앞서 참조된다면, 그 변수는 "직접 사용된" 게 아니에요.
활성화 방법
avoid_catches_without_on_clauses 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 규칙을 추가하면 돼요.
linter:
rules:
- avoid_catches_without_on_clauses
대신 YAML 맵 문법을 사용해서 린트 규칙을 설정하고 있다면, linter > rules 아래에 avoid_catches_without_on_clauses: true를 추가하면 돼요.
linter:
rules:
avoid_catches_without_on_clauses: true