Uploaded image for project: 'Rules Repository'
  1. Rules Repository
  2. RSPEC-2979

Test signatures should not include superfluous "throws" declarations

    XMLWordPrintable

    Details

    • Type: Code Smell Detection
    • Status: Active
    • Resolution: Unresolved
    • Message:
      Remove this "throws xxx" declaration
    • Default Severity:
      Minor
    • Impact:
      Low
    • Likelihood:
      Low
    • Targeted languages:
      Java
    • Remediation Function:
      Constant/Issue
    • Constant Cost:
      5min

      Description

      An exception in a throws declaration in Java is superfluous if it is:

      • listed multiple times
      • a subclass of another listed exception
      • a RuntimeException, or one of its descendants
      • completely unnecessary because the declared exception type cannot actually be thrown

      Noncompliant Code Example

      void foo() throws MyException {
        throw new MyException();
      }
      
      @Test
      public void testMethod1() throws MyException, MyException {  // Noncompliant; should be listed once
        foo();
      }
      
      @Test  
      public void testMethod2() throws MyException { //Noncompliant, exception cannot be thrown
      }
      
      @Test
      public void testMethod3() throws Throwable, Exception {}  // Noncompliant; Exception is a subclass of Throwable
      
      @Test
      public void testMethod4 throws RuntimeException {}  // Noncompliant; RuntimeException can always be thrown
      

      Compliant Solution

      @Test
      public void testMethod1() throws MyException {
        foo();
      }
      
      @Test  
      public void testMethod2() {
      }
      
      @Test
      public void testMethod3()throws Throwable {}
      
      @Test
      public void testMethod4() {}
      

      See

      • Related rule {S1130}

        Attachments

          Activity

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            ann.campbell.2 Ann Campbell
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated: