2009-03-20 2 views
2

내가 ReSharper에서 새로운이야하고 제안하는 것 같다 이유를 이해하기 위해 노력하고있어 :
catch (Exception) { }
for
catch { }ReSharper에서와 C#을 캐치 제

catch { }
for
catch (Exception) { }

나는 당황 스럽다.

답변

1

고려해야 할 대안을 제공하기 만하면 코드 개선에 대한 통찰력이 생길 수 있습니다. 이치에 맞지 않으면 제안을 무시하십시오.

9

기본적으로 두 가지 대안을 전환하는 방법을 제공합니다. 구체적으로 권고하는 것이 더 좋습니다.

ReSharper/Options/Code Inspection/Inspection Severity에서 제공되는 것을 변경할 수 있습니다. 관련 옵션을 찾고 none, hint, suggestion, warning 또는 error 사이에서 우선 순위를 변경하십시오.

+11

Downvoters : downvoters를 설명해주십시오. 그렇지 않으면 본질적으로 쓸모가 없습니다. –

-2

당신에게/catch(Exception ex)에서 catch(Exception)catch 그 반대로 이동 때로는 때 정리 catch 블록 때문에, 당신은 순수, 필터링 로그/랩, 또는 예외를 삼키기 위해 노력하고 있는지 여부에 따라 달라집니다.

IIRC there may also be a difference between the two from the point of view of the code they generate/things they filter and miss

편집을 (me requesting the same feature for CodeRush without being aware it even existed in R# 참조) : 링크는 이전에 표시 된, 따라서 매우 정확 downvotes "빈 캐치 나쁘다!"

+0

어쩌면 사실이지만 OP에 따르면 Resharper는 catch {예외} – Alan

+0

catch() {...}가 "빈 캐치"가 아닌 경우 catch {}를 사용하도록 제안합니다. "catch (Exception) {...}"중괄호 안의 코드는 비어 있지 않아도됩니다. 중괄호 안에 코드를 넣을 수 있습니다. 그렇지 않다면, 당신은 일반적인 예외를 삼키는 것처럼 악한 것입니다 ... –

+1

그것은 실제로 당신이 중괄호에 넣은 코드입니다. –

4

Resharper에는 더 많은 권장 메시지가 있습니다. Exception 클래스를 잡지 말 것을 권한다.

+0

듣기, 들으세요! "catch {}"및 "catch (Exception) {}"은 피해야합니다. –

+0

왜? 이것은 내가 원하는 기능입니다. – BunnyStrider

+0

@BunnyStrider - 당신은'NullReferenceException'을 잡고 싶습니까? –

2

catch { } < - 모든 오류가 표시되지 않습니다. 우리는 오류를 파기해야만 할 것입니다.

catch { throw; } < - 필수 사항은 아닙니다. 컴파일러는 이미 함수를 호출 할 때 오류를 다시 발생 시키려고합니다. 명시 적으로 추가 할 필요는 없습니다.