Repository: hub4j/github-api
Pull request #2036 (2025-02-17 17:31:52)

Removed unused checked exceptions
# Description

Removes exceptions not thrown by the methods.


Patch:
diff --git a/pom.xml b/pom.xml
index 2b1b0b0e2..b28166f9d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -383,16 +383,8 @@
         <artifactId>japicmp-maven-plugin</artifactId>
         <version>0.23.0</version>
         <configuration>
-          <oldVersion>
-            <dependency>
-              <groupId>${project.groupId}</groupId>
-              <artifactId>${project.artifactId}</artifactId>
-              <version>2.0.0-alpha-1</version>
-              <type>jar</type>
-            </dependency>
-          </oldVersion>
           <parameter>
-            <breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications> -->
+            <breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
             <!-- <breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning> -->
             <onlyModified>true</onlyModified>
             <includeSynthetic>true</includeSynthetic>
diff --git a/src/main/java/org/kohsuke/github/GHAppInstallationToken.java b/src/main/java/org/kohsuke/github/GHAppInstallationToken.java
index f69144bbd..817156a4b 100644
--- a/src/main/java/org/kohsuke/github/GHAppInstallationToken.java
+++ b/src/main/java/org/kohsuke/github/GHAppInstallationToken.java
@@ -1,6 +1,5 @@
 package org.kohsuke.github;
 
-import java.io.IOException;
 import java.util.*;
 
 // TODO: Auto-generated Javadoc
@@ -66,10 +65,8 @@ public class GHAppInstallationToken extends GitHubInteractiveObject {
      * Gets expires at.
      *
      * @return date when this token expires
-     * @throws IOException
-     *             on error
      */
-    public Date getExpiresAt() throws IOException {
+    public Date getExpiresAt() {
         return GitHubClient.parseDate(expires_at);
     }
 }
diff --git a/src/main/java/org/kohsuke/github/GHBranch.java b/src/main/java/org/kohsuke/github/GHBranch.java
index f803c67e7..99335c122 100644
--- a/src/main/java/org/kohsuke/github/GHBranch.java
+++ b/src/main/java/org/kohsuke/github/GHBranch.java
@@ -34,11 +34,9 @@ public class GHBranch extends GitHubInteractiveObject {
      *
      * @param name
      *            the name
-     * @throws Exception
-     *             the exception
      */
     @JsonCreator
-    GHBranch(@JsonProperty(value = "name", required = true) String name) throws Exception {
+    GHBranch(@JsonProperty(value = "name", required = true) String name) {
         Objects.requireNonNull(name);
         this.name = name;
     }
diff --git a/src/main/java/org/kohsuke/github/GHCommit.java b/src/main/java/org/kohsuke/github/GHCommit.java
index c1d987483..83ea3be00 100644
--- a/src/main/java/org/kohsuke/github/GHCommit.java
+++ b/src/main/java/org/kohsuke/github/GHCommit.java
@@ -520,10 +520,8 @@ public class GHCommit {
      * Retrieves a list of branches where this commit is the head commit.
      *
      * @return {@link PagedIterable} with the branches where the commit is the head commit
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHBranch> listBranchesWhereHead() throws IOException {
+    public PagedIterable<GHBranch> listBranchesWhereHead() {
         return owner.root()
                 .createRequest()
                 .withUrlPath(String.format("/repos/%s/%s/commits/%s/branches-where-head",
diff --git a/src/main/java/org/kohsuke/github/GHCommitPointer.java b/src/main/java/org/kohsuke/github/GHCommitPointer.java
index f56c214a5..a46623972 100644
--- a/src/main/java/org/kohsuke/github/GHCommitPointer.java
+++ b/src/main/java/org/kohsuke/github/GHCommitPointer.java
@@ -49,11 +49,9 @@ public class GHCommitPointer {
      * This points to the user who owns the {@link #getRepository()}.
      *
      * @return the user
-     * @throws IOException
-     *             the io exception
      */
     @SuppressFBWarnings(value = { "EI_EXPOSE_REP" }, justification = "Expected behavior")
-    public GHUser getUser() throws IOException {
+    public GHUser getUser() {
         if (user != null)
             return user.root().intern(user);
         return user;
diff --git a/src/main/java/org/kohsuke/github/GHCommitStatus.java b/src/main/java/org/kohsuke/github/GHCommitStatus.java
index 524c4d119..880b10191 100644
--- a/src/main/java/org/kohsuke/github/GHCommitStatus.java
+++ b/src/main/java/org/kohsuke/github/GHCommitStatus.java
@@ -1,7 +1,5 @@
 package org.kohsuke.github;
 
-import java.io.IOException;
-
 // TODO: Auto-generated Javadoc
 /**
  * Represents a status of a commit.
@@ -69,10 +67,8 @@ public class GHCommitStatus extends GHObject {
      * Gets creator.
      *
      * @return the creator
-     * @throws IOException
-     *             the io exception
      */
-    public GHUser getCreator() throws IOException {
+    public GHUser getCreator() {
         return root().intern(creator);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHContent.java b/src/main/java/org/kohsuke/github/GHContent.java
index 2bfc2a1bc..b25a78650 100644
--- a/src/main/java/org/kohsuke/github/GHContent.java
+++ b/src/main/java/org/kohsuke/github/GHContent.java
@@ -257,10 +257,8 @@ public class GHContent extends GitHubInteractiveObject implements Refreshable {
      * List immediate children of this directory.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHContent> listDirectoryContent() throws IOException {
+    public PagedIterable<GHContent> listDirectoryContent() {
         if (!isDirectory())
             throw new IllegalStateException(path + " is not a directory");
 
diff --git a/src/main/java/org/kohsuke/github/GHDeployment.java b/src/main/java/org/kohsuke/github/GHDeployment.java
index ae1858066..d441fd5a7 100644
--- a/src/main/java/org/kohsuke/github/GHDeployment.java
+++ b/src/main/java/org/kohsuke/github/GHDeployment.java
@@ -1,6 +1,5 @@
 package org.kohsuke.github;
 
-import java.io.IOException;
 import java.net.URL;
 import java.util.Collections;
 import java.util.Map;
@@ -169,10 +168,8 @@ public class GHDeployment extends GHObject {
      * Gets creator.
      *
      * @return the creator
-     * @throws IOException
-     *             the io exception
      */
-    public GHUser getCreator() throws IOException {
+    public GHUser getCreator() {
         return root().intern(creator);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHDiscussion.java b/src/main/java/org/kohsuke/github/GHDiscussion.java
index 94edaacbc..d2fbaa3f6 100644
--- a/src/main/java/org/kohsuke/github/GHDiscussion.java
+++ b/src/main/java/org/kohsuke/github/GHDiscussion.java
@@ -36,10 +36,8 @@ public class GHDiscussion extends GHObject {
      * Gets the html url.
      *
      * @return the html url
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public URL getHtmlUrl() throws IOException {
+    public URL getHtmlUrl() {
         return GitHubClient.parseURL(htmlUrl);
     }
 
@@ -122,10 +120,8 @@ public class GHDiscussion extends GHObject {
      * @param team
      *            the team in which the discussion will be created.
      * @return a {@link GHLabel.Creator}
-     * @throws IOException
-     *             the io exception
      */
-    static GHDiscussion.Creator create(GHTeam team) throws IOException {
+    static GHDiscussion.Creator create(GHTeam team) {
         return new GHDiscussion.Creator(team);
     }
 
@@ -154,10 +150,8 @@ public class GHDiscussion extends GHObject {
      * @param team
      *            the team
      * @return the paged iterable
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    static PagedIterable<GHDiscussion> readAll(GHTeam team) throws IOException {
+    static PagedIterable<GHDiscussion> readAll(GHTeam team) {
         return team.root()
                 .createRequest()
                 .setRawUrlPath(getRawUrlPath(team, null))
diff --git a/src/main/java/org/kohsuke/github/GHEventInfo.java b/src/main/java/org/kohsuke/github/GHEventInfo.java
index 551b6cb2e..050b141f3 100644
--- a/src/main/java/org/kohsuke/github/GHEventInfo.java
+++ b/src/main/java/org/kohsuke/github/GHEventInfo.java
@@ -162,10 +162,8 @@ public class GHEventInfo extends GitHubInteractiveObject {
      * Gets actor login.
      *
      * @return the login of the actor.
-     * @throws IOException
-     *             on error
      */
-    public String getActorLogin() throws IOException {
+    public String getActorLogin() {
         return actor.getLogin();
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHExternalGroup.java b/src/main/java/org/kohsuke/github/GHExternalGroup.java
index 01d997b62..50518412e 100644
--- a/src/main/java/org/kohsuke/github/GHExternalGroup.java
+++ b/src/main/java/org/kohsuke/github/GHExternalGroup.java
@@ -194,11 +194,9 @@ public class GHExternalGroup extends GitHubInteractiveObject implements Refresha
      * Gets organization.
      *
      * @return the organization
-     * @throws IOException
-     *             the io exception
      */
     @SuppressFBWarnings(value = { "EI_EXPOSE_REP" }, justification = "Expected behavior")
-    public GHOrganization getOrganization() throws IOException {
+    public GHOrganization getOrganization() {
         return organization;
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHGist.java b/src/main/java/org/kohsuke/github/GHGist.java
index d035ee6ef..1103dd32d 100644
--- a/src/main/java/org/kohsuke/github/GHGist.java
+++ b/src/main/java/org/kohsuke/github/GHGist.java
@@ -76,11 +76,9 @@ public class GHGist extends GHObject {
      * Gets owner.
      *
      * @return User that owns this Gist.
-     * @throws IOException
-     *             the io exception
      */
     @SuppressFBWarnings(value = { "EI_EXPOSE_REP" }, justification = "Expected behavior")
-    public GHUser getOwner() throws IOException {
+    public GHUser getOwner() {
         return owner;
     }
 
@@ -265,10 +263,8 @@ public class GHGist extends GHObject {
      * Updates this gist via a builder.
      *
      * @return the gh gist updater
-     * @throws IOException
-     *             the io exception
      */
-    public GHGistUpdater update() throws IOException {
+    public GHGistUpdater update() {
         return new GHGistUpdater(this);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHGistUpdater.java b/src/main/java/org/kohsuke/github/GHGistUpdater.java
index 5faaccde4..8dbd15a47 100644
--- a/src/main/java/org/kohsuke/github/GHGistUpdater.java
+++ b/src/main/java/org/kohsuke/github/GHGistUpdater.java
@@ -41,10 +41,8 @@ public class GHGistUpdater {
      * @param content
      *            the content
      * @return the gh gist updater
-     * @throws IOException
-     *             the io exception
      */
-    public GHGistUpdater addFile(@Nonnull String fileName, @Nonnull String content) throws IOException {
+    public GHGistUpdater addFile(@Nonnull String fileName, @Nonnull String content) {
         updateFile(fileName, content);
         return this;
     }
@@ -55,10 +53,8 @@ public class GHGistUpdater {
      * @param fileName
      *            the file name
      * @return the GH gist updater
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public GHGistUpdater deleteFile(@Nonnull String fileName) throws IOException {
+    public GHGistUpdater deleteFile(@Nonnull String fileName) {
         files.put(fileName, null);
         return this;
     }
@@ -71,10 +67,8 @@ public class GHGistUpdater {
      * @param newFileName
      *            the new file name
      * @return the gh gist updater
-     * @throws IOException
-     *             the io exception
      */
-    public GHGistUpdater renameFile(@Nonnull String fileName, @Nonnull String newFileName) throws IOException {
+    public GHGistUpdater renameFile(@Nonnull String fileName, @Nonnull String newFileName) {
         Map<String, String> file = files.computeIfAbsent(fileName, d -> new HashMap<>());
         file.put("filename", newFileName);
         return this;
@@ -88,10 +82,8 @@ public class GHGistUpdater {
      * @param content
      *            the content
      * @return the gh gist updater
-     * @throws IOException
-     *             the io exception
      */
-    public GHGistUpdater updateFile(@Nonnull String fileName, @Nonnull String content) throws IOException {
+    public GHGistUpdater updateFile(@Nonnull String fileName, @Nonnull String content) {
         Map<String, String> file = files.computeIfAbsent(fileName, d -> new HashMap<>());
         file.put("content", content);
         return this;
@@ -107,11 +99,8 @@ public class GHGistUpdater {
      * @param content
      *            the content
      * @return the gh gist updater
-     * @throws IOException
-     *             the io exception
      */
-    public GHGistUpdater updateFile(@Nonnull String fileName, @Nonnull String newFileName, @Nonnull String content)
-            throws IOException {
+    public GHGistUpdater updateFile(@Nonnull String fileName, @Nonnull String newFileName, @Nonnull String content) {
         Map<String, String> file = files.computeIfAbsent(fileName, d -> new HashMap<>());
         file.put("content", content);
         file.put("filename", newFileName);
diff --git a/src/main/java/org/kohsuke/github/GHIssue.java b/src/main/java/org/kohsuke/github/GHIssue.java
index 15a7eb883..4e654c747 100644
--- a/src/main/java/org/kohsuke/github/GHIssue.java
+++ b/src/main/java/org/kohsuke/github/GHIssue.java
@@ -539,12 +539,10 @@ public class GHIssue extends GHObject implements Reactable {
      * Obtains all the comments associated with this issue, without any filter.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      * @see <a href="https://docs.github.com/en/rest/issues/comments#list-issue-comments">List issue comments</a>
      * @see #queryComments() queryComments to apply filters.
      */
-    public PagedIterable<GHIssueComment> listComments() throws IOException {
+    public PagedIterable<GHIssueComment> listComments() {
         return root().createRequest()
                 .withUrlPath(getIssuesApiRoute() + "/comments")
                 .toIterable(GHIssueComment[].class, item -> item.wrapUp(this));
@@ -717,10 +715,8 @@ public class GHIssue extends GHObject implements Reactable {
      * Gets assignee.
      *
      * @return the assignee
-     * @throws IOException
-     *             the io exception
      */
-    public GHUser getAssignee() throws IOException {
+    public GHUser getAssignee() {
         return root().intern(assignee);
     }
 
@@ -737,10 +733,8 @@ public class GHIssue extends GHObject implements Reactable {
      * User who submitted the issue.
      *
      * @return the user
-     * @throws IOException
-     *             the io exception
      */
-    public GHUser getUser() throws IOException {
+    public GHUser getUser() {
         return root().intern(user);
     }
 
@@ -752,10 +746,8 @@ public class GHIssue extends GHObject implements Reactable {
      * https://github.com/kohsuke/github-api/issues/60.
      *
      * @return the closed by
-     * @throws IOException
-     *             the io exception
      */
-    public GHUser getClosedBy() throws IOException {
+    public GHUser getClosedBy() {
         if (!"closed".equals(state))
             return null;
 
@@ -864,10 +856,8 @@ public class GHIssue extends GHObject implements Reactable {
      * Lists events for this issue. See https://developer.github.com/v3/issues/events/
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHIssueEvent> listEvents() throws IOException {
+    public PagedIterable<GHIssueEvent> listEvents() {
         return root().createRequest()
                 .withUrlPath(getRepository().getApiTailUrl(String.format("/issues/%s/events", number)))
                 .toIterable(GHIssueEvent[].class, item -> item.wrapUp(this));
diff --git a/src/main/java/org/kohsuke/github/GHLabel.java b/src/main/java/org/kohsuke/github/GHLabel.java
index 6b77b8bfa..83f1dfa73 100644
--- a/src/main/java/org/kohsuke/github/GHLabel.java
+++ b/src/main/java/org/kohsuke/github/GHLabel.java
@@ -143,11 +143,9 @@ public class GHLabel extends GitHubInteractiveObject {
      * @param repository
      *            the repository in which the label will be created.
      * @return a {@link Creator}
-     * @throws IOException
-     *             the io exception
      */
     @BetaApi
-    static Creator create(GHRepository repository) throws IOException {
+    static Creator create(GHRepository repository) {
         return new Creator(repository);
     }
 
@@ -176,10 +174,8 @@ public class GHLabel extends GitHubInteractiveObject {
      * @param repository
      *            the repository to read from
      * @return iterable of all labels
-     * @throws IOException
-     *             the io exception
      */
-    static PagedIterable<GHLabel> readAll(@Nonnull final GHRepository repository) throws IOException {
+    static PagedIterable<GHLabel> readAll(@Nonnull final GHRepository repository) {
         return repository.root()
                 .createRequest()
                 .withUrlPath(repository.getApiTailUrl("labels"))
diff --git a/src/main/java/org/kohsuke/github/GHMarketplaceListAccountBuilder.java b/src/main/java/org/kohsuke/github/GHMarketplaceListAccountBuilder.java
index 1e061a36c..745034a8e 100644
--- a/src/main/java/org/kohsuke/github/GHMarketplaceListAccountBuilder.java
+++ b/src/main/java/org/kohsuke/github/GHMarketplaceListAccountBuilder.java
@@ -1,7 +1,5 @@
 package org.kohsuke.github;
 
-import java.io.IOException;
-
 // TODO: Auto-generated Javadoc
 /**
  * Returns any accounts associated with a plan, including free plans.
@@ -72,10 +70,8 @@ public class GHMarketplaceListAccountBuilder extends GitHubInteractiveObject {
      * OAuth Apps must use basic authentication with their client ID and client secret to access this endpoint.
      *
      * @return a paged iterable instance of GHMarketplaceAccountPlan
-     * @throws IOException
-     *             on error
      */
-    public PagedIterable<GHMarketplaceAccountPlan> createRequest() throws IOException {
+    public PagedIterable<GHMarketplaceAccountPlan> createRequest() {
         return builder.withUrlPath(String.format("/marketplace_listing/plans/%d/accounts", this.planId))
                 .toIterable(GHMarketplaceAccountPlan[].class, null);
     }
diff --git a/src/main/java/org/kohsuke/github/GHMilestone.java b/src/main/java/org/kohsuke/github/GHMilestone.java
index eeefaf5a9..3df476bb7 100644
--- a/src/main/java/org/kohsuke/github/GHMilestone.java
+++ b/src/main/java/org/kohsuke/github/GHMilestone.java
@@ -46,10 +46,8 @@ public class GHMilestone extends GHObject {
      * Gets creator.
      *
      * @return the creator
-     * @throws IOException
-     *             the io exception
      */
-    public GHUser getCreator() throws IOException {
+    public GHUser getCreator() {
         return root().intern(creator);
     }
 
@@ -68,10 +66,8 @@ public class GHMilestone extends GHObject {
      * When was this milestone closed?.
      *
      * @return the closed at
-     * @throws IOException
-     *             the io exception
      */
-    public Date getClosedAt() throws IOException {
+    public Date getClosedAt() {
         return GitHubClient.parseDate(closed_at);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHMyself.java b/src/main/java/org/kohsuke/github/GHMyself.java
index 784f120b1..9d692b65c 100644
--- a/src/main/java/org/kohsuke/github/GHMyself.java
+++ b/src/main/java/org/kohsuke/github/GHMyself.java
@@ -162,10 +162,8 @@ public class GHMyself extends GHUser {
      * Gets the all repositories this user owns (public and private).
      *
      * @return the all repositories
-     * @throws IOException
-     *             the io exception
      */
-    public synchronized Map<String, GHRepository> getAllRepositories() throws IOException {
+    public synchronized Map<String, GHRepository> getAllRepositories() {
         Map<String, GHRepository> repositories = new TreeMap<String, GHRepository>();
         for (GHRepository r : listRepositories()) {
             repositories.put(r.getName(), r);
diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java
index 6d0e29933..ec434595a 100644
--- a/src/main/java/org/kohsuke/github/GHOrganization.java
+++ b/src/main/java/org/kohsuke/github/GHOrganization.java
@@ -44,10 +44,8 @@ public class GHOrganization extends GHPerson {
      * Teams by their names.
      *
      * @return the teams
-     * @throws IOException
-     *             the io exception
      */
-    public Map<String, GHTeam> getTeams() throws IOException {
+    public Map<String, GHTeam> getTeams() {
         Map<String, GHTeam> r = new TreeMap<String, GHTeam>();
         for (GHTeam t : listTeams()) {
             r.put(t.getName(), t);
@@ -59,10 +57,8 @@ public class GHOrganization extends GHPerson {
      * List up all the teams.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHTeam> listTeams() throws IOException {
+    public PagedIterable<GHTeam> listTeams() {
         return root().createRequest()
                 .withUrlPath(String.format("/orgs/%s/teams", login))
                 .toIterable(GHTeam[].class, item -> item.wrapUp(this));
@@ -91,10 +87,8 @@ public class GHOrganization extends GHPerson {
      * @param name
      *            the name
      * @return the team by name
-     * @throws IOException
-     *             the io exception
      */
-    public GHTeam getTeamByName(String name) throws IOException {
+    public GHTeam getTeamByName(String name) {
         for (GHTeam t : listTeams()) {
             if (t.getName().equals(name))
                 return t;
@@ -123,12 +117,10 @@ public class GHOrganization extends GHPerson {
      * List up all the external groups.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      * @see <a href=
      *      "https://docs.github.com/en/enterprise-cloud@latest/rest/teams/external-groups?apiVersion=2022-11-28#list-external-groups-in-an-organization">documentation</a>
      */
-    public PagedIterable<GHExternalGroup> listExternalGroups() throws IOException {
+    public PagedIterable<GHExternalGroup> listExternalGroups() {
         return listExternalGroups(null);
     }
 
@@ -138,12 +130,10 @@ public class GHOrganization extends GHPerson {
      * @param displayName
      *            the text that must be part of the returned groups name
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      * @see <a href=
      *      "https://docs.github.com/en/enterprise-cloud@latest/rest/teams/external-groups?apiVersion=2022-11-28#list-external-groups-in-an-organization">documentation</a>
      */
-    public PagedIterable<GHExternalGroup> listExternalGroups(final String displayName) throws IOException {
+    public PagedIterable<GHExternalGroup> listExternalGroups(final String displayName) {
         final Requester requester = root().createRequest()
                 .withUrlPath(String.format("/orgs/%s/external-groups", login));
         if (displayName != null) {
@@ -288,10 +278,8 @@ public class GHOrganization extends GHPerson {
      * All the members of this organization.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listMembers() throws IOException {
+    public PagedIterable<GHUser> listMembers() {
         return listMembers("members");
     }
 
@@ -299,10 +287,8 @@ public class GHOrganization extends GHPerson {
      * All the public members of this organization.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listPublicMembers() throws IOException {
+    public PagedIterable<GHUser> listPublicMembers() {
         return listMembers("public_members");
     }
 
@@ -310,14 +296,12 @@ public class GHOrganization extends GHPerson {
      * All the outside collaborators of this organization.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listOutsideCollaborators() throws IOException {
+    public PagedIterable<GHUser> listOutsideCollaborators() {
         return listMembers("outside_collaborators");
     }
 
-    private PagedIterable<GHUser> listMembers(String suffix) throws IOException {
+    private PagedIterable<GHUser> listMembers(String suffix) {
         return listMembers(suffix, null, null);
     }
 
@@ -327,10 +311,8 @@ public class GHOrganization extends GHPerson {
      * @param filter
      *            the filter
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listMembersWithFilter(String filter) throws IOException {
+    public PagedIterable<GHUser> listMembersWithFilter(String filter) {
         return listMembers("members", filter, null);
     }
 
@@ -340,10 +322,8 @@ public class GHOrganization extends GHPerson {
      * @param filter
      *            the filter
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listOutsideCollaboratorsWithFilter(String filter) throws IOException {
+    public PagedIterable<GHUser> listOutsideCollaboratorsWithFilter(String filter) {
         return listMembers("outside_collaborators", filter, null);
     }
 
@@ -353,15 +333,12 @@ public class GHOrganization extends GHPerson {
      * @param role
      *            the role
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listMembersWithRole(String role) throws IOException {
+    public PagedIterable<GHUser> listMembersWithRole(String role) {
         return listMembers("members", null, role);
     }
 
-    private PagedIterable<GHUser> listMembers(final String suffix, final String filter, String role)
-            throws IOException {
+    private PagedIterable<GHUser> listMembers(final String suffix, final String filter, String role) {
         return root().createRequest()
                 .withUrlPath(String.format("/orgs/%s/%s", login, suffix))
                 .with("filter", filter)
@@ -373,10 +350,8 @@ public class GHOrganization extends GHPerson {
      * List up all the security managers.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHTeam> listSecurityManagers() throws IOException {
+    public PagedIterable<GHTeam> listSecurityManagers() {
         return root().createRequest()
                 .withUrlPath(String.format("/orgs/%s/security-managers", login))
                 .toIterable(GHTeam[].class, item -> item.wrapUp(this));
@@ -432,10 +407,8 @@ public class GHOrganization extends GHPerson {
      * @param status
      *            The status filter (all, open or closed).
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHProject> listProjects(final GHProject.ProjectStateFilter status) throws IOException {
+    public PagedIterable<GHProject> listProjects(final GHProject.ProjectStateFilter status) {
         return root().createRequest()
                 .with("state", status)
                 .withUrlPath(String.format("/orgs/%s/projects", login))
@@ -446,10 +419,8 @@ public class GHOrganization extends GHPerson {
      * Returns all open projects for the organization.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHProject> listProjects() throws IOException {
+    public PagedIterable<GHProject> listProjects() {
         return listProjects(GHProject.ProjectStateFilter.OPEN);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHPerson.java b/src/main/java/org/kohsuke/github/GHPerson.java
index 1ef07032a..1b87779a6 100644
--- a/src/main/java/org/kohsuke/github/GHPerson.java
+++ b/src/main/java/org/kohsuke/github/GHPerson.java
@@ -72,10 +72,8 @@ public abstract class GHPerson extends GHObject {
      * To list your own repositories, including private repositories, use {@link GHMyself#listRepositories()}
      *
      * @return the repositories
-     * @throws IOException
-     *             the io exception
      */
-    public synchronized Map<String, GHRepository> getRepositories() throws IOException {
+    public synchronized Map<String, GHRepository> getRepositories() {
         Map<String, GHRepository> repositories = new TreeMap<String, GHRepository>();
         for (GHRepository r : listRepositories().withPageSize(100)) {
             repositories.put(r.getName(), r);
diff --git a/src/main/java/org/kohsuke/github/GHProject.java b/src/main/java/org/kohsuke/github/GHProject.java
index 3d0ebdd48..38fcf51e9 100644
--- a/src/main/java/org/kohsuke/github/GHProject.java
+++ b/src/main/java/org/kohsuke/github/GHProject.java
@@ -60,10 +60,8 @@ public class GHProject extends GHObject {
      * Gets the html url.
      *
      * @return the html url
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public URL getHtmlUrl() throws IOException {
+    public URL getHtmlUrl() {
         return GitHubClient.parseURL(html_url);
     }
 
@@ -272,10 +270,8 @@ public class GHProject extends GHObject {
      * List columns paged iterable.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHProjectColumn> listColumns() throws IOException {
+    public PagedIterable<GHProjectColumn> listColumns() {
         final GHProject project = this;
         return root().createRequest()
                 .withUrlPath(String.format("/projects/%d/columns", getId()))
diff --git a/src/main/java/org/kohsuke/github/GHProjectCard.java b/src/main/java/org/kohsuke/github/GHProjectCard.java
index ddfba5c15..20a95294a 100644
--- a/src/main/java/org/kohsuke/github/GHProjectCard.java
+++ b/src/main/java/org/kohsuke/github/GHProjectCard.java
@@ -33,10 +33,8 @@ public class GHProjectCard extends GHObject {
      * Gets the html url.
      *
      * @return the html url
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public URL getHtmlUrl() throws IOException {
+    public URL getHtmlUrl() {
         return null;
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHProjectColumn.java b/src/main/java/org/kohsuke/github/GHProjectColumn.java
index 5af7afec7..e4ca1f5f9 100644
--- a/src/main/java/org/kohsuke/github/GHProjectColumn.java
+++ b/src/main/java/org/kohsuke/github/GHProjectColumn.java
@@ -124,10 +124,8 @@ public class GHProjectColumn extends GHObject {
      * List cards paged iterable.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHProjectCard> listCards() throws IOException {
+    public PagedIterable<GHProjectCard> listCards() {
         final GHProjectColumn column = this;
         return root().createRequest()
                 .withUrlPath(String.format("/projects/columns/%d/cards", getId()))
diff --git a/src/main/java/org/kohsuke/github/GHProjectsV2Item.java b/src/main/java/org/kohsuke/github/GHProjectsV2Item.java
index 43d022448..30e0424d1 100644
--- a/src/main/java/org/kohsuke/github/GHProjectsV2Item.java
+++ b/src/main/java/org/kohsuke/github/GHProjectsV2Item.java
@@ -2,7 +2,6 @@ package org.kohsuke.github;
 
 import org.kohsuke.github.internal.EnumUtils;
 
-import java.io.IOException;
 import java.net.URL;
 import java.util.Date;
 
@@ -67,10 +66,8 @@ public class GHProjectsV2Item extends GHObject {
      * Gets the creator.
      *
      * @return the creator
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public GHUser getCreator() throws IOException {
+    public GHUser getCreator() {
         return root().intern(creator);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHPullRequest.java b/src/main/java/org/kohsuke/github/GHPullRequest.java
index a355b07a1..128f819d5 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequest.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequest.java
@@ -436,10 +436,8 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      * Obtains all the review comments associated with this pull request.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHPullRequestReviewComment> listReviewComments() throws IOException {
+    public PagedIterable<GHPullRequestReviewComment> listReviewComments() {
         return root().createRequest()
                 .withUrlPath(getApiRoute() + COMMENTS_ACTION)
                 .toIterable(GHPullRequestReviewComment[].class, item -> item.wrapUp(this));
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestReview.java b/src/main/java/org/kohsuke/github/GHPullRequestReview.java
index be5bbdc06..6c97354df 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestReview.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestReview.java
@@ -143,10 +143,8 @@ public class GHPullRequestReview extends GHObject {
      * When was this resource created?.
      *
      * @return the submitted at
-     * @throws IOException
-     *             the io exception
      */
-    public Date getSubmittedAt() throws IOException {
+    public Date getSubmittedAt() {
         return GitHubClient.parseDate(submitted_at);
     }
 
@@ -216,10 +214,8 @@ public class GHPullRequestReview extends GHObject {
      * Obtains all the review comments associated with this pull request review.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHPullRequestReviewComment> listReviewComments() throws IOException {
+    public PagedIterable<GHPullRequestReviewComment> listReviewComments() {
         return owner.root()
                 .createRequest()
                 .withUrlPath(getApiRoute() + "/comments")
diff --git a/src/main/java/org/kohsuke/github/GHRef.java b/src/main/java/org/kohsuke/github/GHRef.java
index 4db5e1c67..b85c650e2 100644
--- a/src/main/java/org/kohsuke/github/GHRef.java
+++ b/src/main/java/org/kohsuke/github/GHRef.java
@@ -145,10 +145,8 @@ public class GHRef extends GitHubInteractiveObject {
      * @param refType
      *            the type of reg to search for e.g. <code>tags</code> or <code>commits</code>
      * @return paged iterable of all refs of the specified type
-     * @throws IOException
-     *             on failure communicating with GitHub, potentially due to an invalid ref type being requested
      */
-    static PagedIterable<GHRef> readMatching(GHRepository repository, String refType) throws IOException {
+    static PagedIterable<GHRef> readMatching(GHRepository repository, String refType) {
         if (refType.startsWith("refs/")) {
             refType = refType.replaceFirst("refs/", "");
         }
diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java
index 2916d8fac..e96c813e4 100644
--- a/src/main/java/org/kohsuke/github/GHRepository.java
+++ b/src/main/java/org/kohsuke/github/GHRepository.java
@@ -504,10 +504,8 @@ public class GHRepository extends GHObject {
      * List releases paged iterable.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHRelease> listReleases() throws IOException {
+    public PagedIterable<GHRelease> listReleases() {
         return root().createRequest()
                 .withUrlPath(getApiTailUrl("releases"))
                 .toIterable(GHRelease[].class, item -> item.wrap(this));
@@ -517,10 +515,8 @@ public class GHRepository extends GHObject {
      * List tags paged iterable.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHTag> listTags() throws IOException {
+    public PagedIterable<GHTag> listTags() {
         return root().createRequest()
                 .withUrlPath(getApiTailUrl("tags"))
                 .toIterable(GHTag[].class, item -> item.wrap(this));
@@ -879,10 +875,8 @@ public class GHRepository extends GHObject {
      * Lists up the collaborators on this repository.
      *
      * @return Users paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listCollaborators() throws IOException {
+    public PagedIterable<GHUser> listCollaborators() {
         return listUsers("collaborators");
     }
 
@@ -892,10 +886,8 @@ public class GHRepository extends GHObject {
      * @param affiliation
      *            Filter users by affiliation
      * @return Users paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listCollaborators(CollaboratorAffiliation affiliation) throws IOException {
+    public PagedIterable<GHUser> listCollaborators(CollaboratorAffiliation affiliation) {
         return listUsers(root().createRequest().with("affiliation", affiliation), "collaborators");
     }
 
@@ -905,10 +897,8 @@ public class GHRepository extends GHObject {
      * available assignees</a> to which issues may be assigned.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listAssignees() throws IOException {
+    public PagedIterable<GHUser> listAssignees() {
         return listUsers("assignees");
     }
 
@@ -1752,10 +1742,8 @@ public class GHRepository extends GHObject {
      * Retrieves all refs for the github repository.
      *
      * @return paged iterable of all refs
-     * @throws IOException
-     *             on failure communicating with GitHub, potentially due to an invalid ref type being requested
      */
-    public PagedIterable<GHRef> listRefs() throws IOException {
+    public PagedIterable<GHRef> listRefs() {
         return listRefs("");
     }
 
@@ -1778,10 +1766,8 @@ public class GHRepository extends GHObject {
      * @param refType
      *            the type of reg to search for e.g. <code>tags</code> or <code>commits</code>
      * @return paged iterable of all refs of the specified type
-     * @throws IOException
-     *             on failure communicating with GitHub, potentially due to an invalid ref type being requested
      */
-    public PagedIterable<GHRef> listRefs(String refType) throws IOException {
+    public PagedIterable<GHRef> listRefs(String refType) {
         return GHRef.readMatching(this, refType);
     }
 
@@ -2016,10 +2002,8 @@ public class GHRepository extends GHObject {
      * @param sha1
      *            the sha 1
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHCommitStatus> listCommitStatuses(final String sha1) throws IOException {
+    public PagedIterable<GHCommitStatus> listCommitStatuses(final String sha1) {
         return root().createRequest()
                 .withUrlPath(String.format("/repos/%s/%s/statuses/%s", getOwnerName(), name, sha1))
                 .toIterable(GHCommitStatus[].class, null);
@@ -2045,12 +2029,10 @@ public class GHRepository extends GHObject {
      * @param ref
      *            ref
      * @return check runs for given ref
-     * @throws IOException
-     *             the io exception
      * @see <a href= "https://developer.github.com/v3/checks/runs/#list-check-runs-for-a-specific-ref">List check runs
      *      for a specific ref</a>
      */
-    public PagedIterable<GHCheckRun> getCheckRuns(String ref) throws IOException {
+    public PagedIterable<GHCheckRun> getCheckRuns(String ref) {
         GitHubRequest request = root().createRequest()
                 .withUrlPath(String.format("/repos/%s/%s/commits/%s/check-runs", getOwnerName(), name, ref))
                 .build();
@@ -2065,12 +2047,10 @@ public class GHRepository extends GHObject {
      * @param params
      *            a map of parameters to filter check runs
      * @return check runs for the given ref
-     * @throws IOException
-     *             the io exception
      * @see <a href= "https://developer.github.com/v3/checks/runs/#list-check-runs-for-a-specific-ref">List check runs
      *      for a specific ref</a>
      */
-    public PagedIterable<GHCheckRun> getCheckRuns(String ref, Map<String, Object> params) throws IOException {
+    public PagedIterable<GHCheckRun> getCheckRuns(String ref, Map<String, Object> params) {
         GitHubRequest request = root().createRequest()
                 .withUrlPath(String.format("/repos/%s/%s/commits/%s/check-runs", getOwnerName(), name, ref))
                 .with(params)
@@ -2160,10 +2140,8 @@ public class GHRepository extends GHObject {
      * Lists repository events.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHEventInfo> listEvents() throws IOException {
+    public PagedIterable<GHEventInfo> listEvents() {
         return root().createRequest()
                 .withUrlPath(String.format("/repos/%s/%s/events", getOwnerName(), name))
                 .toIterable(GHEventInfo[].class, null);
@@ -2175,10 +2153,8 @@ public class GHRepository extends GHObject {
      * https://developer.github.com/v3/issues/labels/#list-all-labels-for-this-repository
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHLabel> listLabels() throws IOException {
+    public PagedIterable<GHLabel> listLabels() {
         return GHLabel.readAll(this);
     }
 
@@ -2690,10 +2666,8 @@ public class GHRepository extends GHObject {
      * List contributors paged iterable.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<Contributor> listContributors() throws IOException {
+    public PagedIterable<Contributor> listContributors() {
         return listContributors(null);
     }
 
@@ -2703,12 +2677,10 @@ public class GHRepository extends GHObject {
      * @param includeAnonymous
      *            whether to include anonymous contributors
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      * @see <a href="https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#list-repository-contributors">
      *      GitHub API - List Repository Contributors</a>
      */
-    public PagedIterable<Contributor> listContributors(Boolean includeAnonymous) throws IOException {
+    public PagedIterable<Contributor> listContributors(Boolean includeAnonymous) {
         return root().createRequest()
                 .withUrlPath(getApiTailUrl("contributors"))
                 .with("anon", includeAnonymous)
@@ -2800,10 +2772,8 @@ public class GHRepository extends GHObject {
      * @param status
      *            The status filter (all, open or closed).
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHProject> listProjects(final GHProject.ProjectStateFilter status) throws IOException {
+    public PagedIterable<GHProject> listProjects(final GHProject.ProjectStateFilter status) {
         return root().createRequest()
                 .with("state", status)
                 .withUrlPath(getApiTailUrl("projects"))
@@ -2927,10 +2897,8 @@ public class GHRepository extends GHObject {
      * https://developer.github.com/v3/issues/events/#list-events-for-a-repository
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHIssueEvent> listIssueEvents() throws IOException {
+    public PagedIterable<GHIssueEvent> listIssueEvents() {
         return root().createRequest()
                 .withUrlPath(getApiTailUrl("issues/events"))
                 .toIterable(GHIssueEvent[].class, null);
@@ -3316,10 +3284,8 @@ public class GHRepository extends GHObject {
      * @param branch
      *            the branch
      * @return the rules for branch
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHRepositoryRule> listRulesForBranch(String branch) throws IOException {
+    public PagedIterable<GHRepositoryRule> listRulesForBranch(String branch) {
         return root().createRequest()
                 .method("GET")
                 .withUrlPath(getApiTailUrl("/rules/branches/" + branch))
@@ -3379,10 +3345,8 @@ public class GHRepository extends GHObject {
      * (https://docs.github.com/en/rest/repos/autolinks?apiVersion=2022-11-28#get-all-autolinks-of-a-repository)
      *
      * @return all autolinks in the repo
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHAutolink> listAutolinks() throws IOException {
+    public PagedIterable<GHAutolink> listAutolinks() {
         return root().createRequest()
                 .withHeader("Accept", "application/vnd.github+json")
                 .withUrlPath(String.format("/repos/%s/%s/autolinks", getOwnerName(), getName()))
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryDiscussion.java b/src/main/java/org/kohsuke/github/GHRepositoryDiscussion.java
index 2c1bc4b27..a04f23449 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryDiscussion.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryDiscussion.java
@@ -2,7 +2,6 @@ package org.kohsuke.github;
 
 import org.kohsuke.github.internal.EnumUtils;
 
-import java.io.IOException;
 import java.net.URL;
 import java.util.Date;
 
@@ -78,10 +77,8 @@ public class GHRepositoryDiscussion extends GHObject {
      * Gets the answer chosen by.
      *
      * @return the answer chosen by
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public GHUser getAnswerChosenBy() throws IOException {
+    public GHUser getAnswerChosenBy() {
         return root().intern(answerChosenBy);
     }
 
@@ -116,10 +113,8 @@ public class GHRepositoryDiscussion extends GHObject {
      * Gets the user.
      *
      * @return the user
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public GHUser getUser() throws IOException {
+    public GHUser getUser() {
         return root().intern(user);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryDiscussionComment.java b/src/main/java/org/kohsuke/github/GHRepositoryDiscussionComment.java
index b16f61a98..327eb036c 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryDiscussionComment.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryDiscussionComment.java
@@ -1,6 +1,5 @@
 package org.kohsuke.github;
 
-import java.io.IOException;
 import java.net.URL;
 
 /**
@@ -64,10 +63,8 @@ public class GHRepositoryDiscussionComment extends GHObject {
      * Gets the user.
      *
      * @return the user
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public GHUser getUser() throws IOException {
+    public GHUser getUser() {
         return root().intern(user);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryStatistics.java b/src/main/java/org/kohsuke/github/GHRepositoryStatistics.java
index 4de7fbad5..1b075861f 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryStatistics.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryStatistics.java
@@ -40,12 +40,10 @@ public class GHRepositoryStatistics extends GitHubInteractiveObject {
      * https://developer.github.com/v3/repos/statistics/#get-contributors-list-with-additions-deletions-and-commit-counts
      *
      * @return the contributor stats
-     * @throws IOException
-     *             the io exception
      * @throws InterruptedException
      *             the interrupted exception
      */
-    public PagedIterable<ContributorStats> getContributorStats() throws IOException, InterruptedException {
+    public PagedIterable<ContributorStats> getContributorStats() throws InterruptedException {
         return getContributorStats(true);
     }
 
@@ -55,16 +53,13 @@ public class GHRepositoryStatistics extends GitHubInteractiveObject {
      * @param waitTillReady
      *            Whether to sleep the thread if necessary until the statistics are ready. This is true by default.
      * @return the contributor stats
-     * @throws IOException
-     *             the io exception
      * @throws InterruptedException
      *             the interrupted exception
      */
     @BetaApi
     @SuppressWarnings("SleepWhileInLoop")
     @SuppressFBWarnings(value = { "RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE" }, justification = "JSON API")
-    public PagedIterable<ContributorStats> getContributorStats(boolean waitTillReady)
-            throws IOException, InterruptedException {
+    public PagedIterable<ContributorStats> getContributorStats(boolean waitTillReady) throws InterruptedException {
         PagedIterable<GHRepositoryStatistics.ContributorStats> stats = getContributorStatsImpl();
 
         if (stats == null && waitTillReady) {
@@ -84,7 +79,7 @@ public class GHRepositoryStatistics extends GitHubInteractiveObject {
     /**
      * This gets the actual statistics from the server. Returns null if they are still being cached.
      */
-    private PagedIterable<ContributorStats> getContributorStatsImpl() throws IOException {
+    private PagedIterable<ContributorStats> getContributorStatsImpl() {
         return root().createRequest()
                 .withUrlPath(getApiTailUrl("contributors"))
                 .toIterable(ContributorStats[].class, null);
@@ -242,10 +237,8 @@ public class GHRepositoryStatistics extends GitHubInteractiveObject {
      * https://developer.github.com/v3/repos/statistics/#get-the-last-year-of-commit-activity-data
      *
      * @return the commit activity
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<CommitActivity> getCommitActivity() throws IOException {
+    public PagedIterable<CommitActivity> getCommitActivity() {
         return root().createRequest()
                 .withUrlPath(getApiTailUrl("commit_activity"))
                 .toIterable(CommitActivity[].class, null);
diff --git a/src/main/java/org/kohsuke/github/GHRepositoryVariable.java b/src/main/java/org/kohsuke/github/GHRepositoryVariable.java
index 6a45c6cf9..cbafab900 100644
--- a/src/main/java/org/kohsuke/github/GHRepositoryVariable.java
+++ b/src/main/java/org/kohsuke/github/GHRepositoryVariable.java
@@ -115,11 +115,9 @@ public class GHRepositoryVariable extends GitHubInteractiveObject {
      * @param repository
      *            the repository in which the variable will be created.
      * @return a {@link GHRepositoryVariable.Creator}
-     * @throws IOException
-     *             the io exception
      */
     @BetaApi
-    static GHRepositoryVariable.Creator create(GHRepository repository) throws IOException {
+    static GHRepositoryVariable.Creator create(GHRepository repository) {
         return new GHRepositoryVariable.Creator(repository);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHTeam.java b/src/main/java/org/kohsuke/github/GHTeam.java
index edba5e7b2..d2c9af1eb 100644
--- a/src/main/java/org/kohsuke/github/GHTeam.java
+++ b/src/main/java/org/kohsuke/github/GHTeam.java
@@ -164,11 +164,9 @@ public class GHTeam extends GHObject implements Refreshable {
      * Retrieves the discussions.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
     @Nonnull
-    public PagedIterable<GHDiscussion> listDiscussions() throws IOException {
+    public PagedIterable<GHDiscussion> listDiscussions() {
         return GHDiscussion.readAll(this);
     }
 
@@ -178,10 +176,8 @@ public class GHTeam extends GHObject implements Refreshable {
      * @param role
      *            the role
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listMembers(String role) throws IOException {
+    public PagedIterable<GHUser> listMembers(String role) {
         return root().createRequest().withUrlPath(api("/members")).with("role", role).toIterable(GHUser[].class, null);
     }
 
@@ -191,10 +187,8 @@ public class GHTeam extends GHObject implements Refreshable {
      * @param role
      *            the role
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listMembers(Role role) throws IOException {
+    public PagedIterable<GHUser> listMembers(Role role) {
         return listMembers(transformEnum(role));
     }
 
@@ -217,10 +211,8 @@ public class GHTeam extends GHObject implements Refreshable {
      * Retrieves the current members.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listMembers() throws IOException {
+    public PagedIterable<GHUser> listMembers() {
         return listMembers("all");
     }
 
@@ -228,10 +220,8 @@ public class GHTeam extends GHObject implements Refreshable {
      * Retrieves the teams that are children of this team.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHTeam> listChildTeams() throws IOException {
+    public PagedIterable<GHTeam> listChildTeams() {
         return root().createRequest()
                 .withUrlPath(api("/teams"))
                 .toIterable(GHTeam[].class, item -> item.wrapUp(this.organization));
@@ -268,10 +258,8 @@ public class GHTeam extends GHObject implements Refreshable {
      * Gets repositories.
      *
      * @return the repositories
-     * @throws IOException
-     *             the io exception
      */
-    public Map<String, GHRepository> getRepositories() throws IOException {
+    public Map<String, GHRepository> getRepositories() {
         Map<String, GHRepository> m = new TreeMap<>();
         for (GHRepository r : listRepositories()) {
             m.put(r.getName(), r);
diff --git a/src/main/java/org/kohsuke/github/GHUser.java b/src/main/java/org/kohsuke/github/GHUser.java
index fd93a0093..26da5dbc7 100644
--- a/src/main/java/org/kohsuke/github/GHUser.java
+++ b/src/main/java/org/kohsuke/github/GHUser.java
@@ -244,10 +244,8 @@ public class GHUser extends GHPerson {
      * Lists Gists created by this user.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHGist> listGists() throws IOException {
+    public PagedIterable<GHGist> listGists() {
         return root().createRequest()
                 .withUrlPath(String.format("/users/%s/gists", login))
                 .toIterable(GHGist[].class, null);
diff --git a/src/main/java/org/kohsuke/github/GHWorkflow.java b/src/main/java/org/kohsuke/github/GHWorkflow.java
index 522870a9c..87d7278e8 100644
--- a/src/main/java/org/kohsuke/github/GHWorkflow.java
+++ b/src/main/java/org/kohsuke/github/GHWorkflow.java
@@ -67,10 +67,8 @@ public class GHWorkflow extends GHObject {
      * Gets the html url.
      *
      * @return the html url
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public URL getHtmlUrl() throws IOException {
+    public URL getHtmlUrl() {
         return GitHubClient.parseURL(htmlUrl);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHWorkflowRun.java b/src/main/java/org/kohsuke/github/GHWorkflowRun.java
index 4fe887384..04a431abb 100644
--- a/src/main/java/org/kohsuke/github/GHWorkflowRun.java
+++ b/src/main/java/org/kohsuke/github/GHWorkflowRun.java
@@ -113,10 +113,8 @@ public class GHWorkflowRun extends GHObject {
      * When was this run triggered?.
      *
      * @return run triggered
-     * @throws IOException
-     *             on error
      */
-    public Date getRunStartedAt() throws IOException {
+    public Date getRunStartedAt() {
         return GitHubClient.parseDate(runStartedAt);
     }
 
@@ -134,10 +132,8 @@ public class GHWorkflowRun extends GHObject {
      * Gets the html url.
      *
      * @return the html url
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public URL getHtmlUrl() throws IOException {
+    public URL getHtmlUrl() {
         return GitHubClient.parseURL(htmlUrl);
     }
 
diff --git a/src/main/java/org/kohsuke/github/GitHub.java b/src/main/java/org/kohsuke/github/GitHub.java
index aa5b6239e..a7f660512 100644
--- a/src/main/java/org/kohsuke/github/GitHub.java
+++ b/src/main/java/org/kohsuke/github/GitHub.java
@@ -596,11 +596,9 @@ public class GitHub {
      * Returns a list of popular open source licenses.
      *
      * @return a list of popular open source licenses
-     * @throws IOException
-     *             the io exception
      * @see <a href="https://developer.github.com/v3/licenses/">GitHub API - Licenses</a>
      */
-    public PagedIterable<GHLicense> listLicenses() throws IOException {
+    public PagedIterable<GHLicense> listLicenses() {
         return createRequest().withUrlPath("/licenses").toIterable(GHLicense[].class, null);
     }
 
@@ -608,10 +606,8 @@ public class GitHub {
      * Returns a list of all users.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      */
-    public PagedIterable<GHUser> listUsers() throws IOException {
+    public PagedIterable<GHUser> listUsers() {
         return createRequest().withUrlPath("/users").toIterable(GHUser[].class, null);
     }
 
@@ -637,12 +633,10 @@ public class GitHub {
      * OAuth Apps must use basic authentication with their client ID and client secret to access this endpoint.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      * @see <a href="https://developer.github.com/v3/apps/marketplace/#list-all-plans-for-your-marketplace-listing">List
      *      Plans</a>
      */
-    public PagedIterable<GHMarketplacePlan> listMarketplacePlans() throws IOException {
+    public PagedIterable<GHMarketplacePlan> listMarketplacePlans() {
         return createRequest().withUrlPath("/marketplace_listing/plans").toIterable(GHMarketplacePlan[].class, null);
     }
 
@@ -690,12 +684,10 @@ public class GitHub {
      * OAuth Apps must authenticate using an OAuth token.
      *
      * @return the paged iterable of GHMarketplaceUserPurchase
-     * @throws IOException
-     *             the io exception
      * @see <a href="https://developer.github.com/v3/apps/marketplace/#get-a-users-marketplace-purchases">Get a user's
      *      Marketplace purchases</a>
      */
-    public PagedIterable<GHMarketplaceUserPurchase> getMyMarketplacePurchases() throws IOException {
+    public PagedIterable<GHMarketplaceUserPurchase> getMyMarketplacePurchases() {
         return createRequest().withUrlPath("/user/marketplace_purchases")
                 .toIterable(GHMarketplaceUserPurchase[].class, null);
     }
@@ -993,12 +985,10 @@ public class GitHub {
      * Returns a list of all authorizations.
      *
      * @return the paged iterable
-     * @throws IOException
-     *             the io exception
      * @see <a href="https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations">List your
      *      authorizations</a>
      */
-    public PagedIterable<GHAuthorization> listMyAuthorizations() throws IOException {
+    public PagedIterable<GHAuthorization> listMyAuthorizations() {
         return createRequest().withUrlPath("/authorizations").toIterable(GHAuthorization[].class, null);
     }
 
@@ -1056,11 +1046,9 @@ public class GitHub {
      * ways of retrieving installations.
      *
      * @return the app
-     * @throws IOException
-     *             the io exception
      * @see <a href="https://docs.github.com/en/rest/apps/installations">GitHub App installations</a>
      */
-    public GHAuthenticatedAppInstallation getInstallation() throws IOException {
+    public GHAuthenticatedAppInstallation getInstallation() {
         return new GHAuthenticatedAppInstallation(this);
     }
 
@@ -1317,10 +1305,8 @@ public class GitHub {
      * @param user
      *            the user
      * @return the GH user
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    GHUser intern(GHUser user) throws IOException {
+    GHUser intern(GHUser user) {
         if (user != null) {
             // if we already have this user in our map, get it
             // if not, remember this new user
diff --git a/src/main/java/org/kohsuke/github/GitHubBuilder.java b/src/main/java/org/kohsuke/github/GitHubBuilder.java
index 19f4c4a95..035ad76a6 100644
--- a/src/main/java/org/kohsuke/github/GitHubBuilder.java
+++ b/src/main/java/org/kohsuke/github/GitHubBuilder.java
@@ -106,10 +106,8 @@ public class GitHubBuilder implements Cloneable {
      * See class javadoc for the relationship between these coordinates.
      *
      * @return the GitHubBuilder
-     * @throws IOException
-     *             the io exception
      */
-    public static GitHubBuilder fromEnvironment() throws IOException {
+    public static GitHubBuilder fromEnvironment() {
         Properties props = new Properties();
         for (Entry<String, String> e : System.getenv().entrySet()) {
             String name = e.getKey().toLowerCase(Locale.ENGLISH);
diff --git a/src/main/java/org/kohsuke/github/GitHubClient.java b/src/main/java/org/kohsuke/github/GitHubClient.java
index 38552b573..a8cf29693 100644
--- a/src/main/java/org/kohsuke/github/GitHubClient.java
+++ b/src/main/java/org/kohsuke/github/GitHubClient.java
@@ -111,15 +111,13 @@ class GitHubClient {
      *            the rate limit checker
      * @param authorizationProvider
      *            the authorization provider
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
     GitHubClient(String apiUrl,
             GitHubConnector connector,
             GitHubRateLimitHandler rateLimitHandler,
             GitHubAbuseLimitHandler abuseLimitHandler,
             GitHubRateLimitChecker rateLimitChecker,
-            AuthorizationProvider authorizationProvider) throws IOException {
+            AuthorizationProvider authorizationProvider) {
 
         if (apiUrl.endsWith("/")) {
             apiUrl = apiUrl.substring(0, apiUrl.length() - 1); // normalize
@@ -679,7 +677,7 @@ class GitHubClient {
      */
     private static IOException interpretApiError(IOException e,
             @Nonnull GitHubConnectorRequest connectorRequest,
-            @CheckForNull GitHubConnectorResponse connectorResponse) throws IOException {
+            @CheckForNull GitHubConnectorResponse connectorResponse) {
         // If we're already throwing a GHIOException, pass through
         if (e instanceof GHIOException) {
             return e;
diff --git a/src/main/java/org/kohsuke/github/GitHubPageIterator.java b/src/main/java/org/kohsuke/github/GitHubPageIterator.java
index 4f622d05b..975a010a9 100644
--- a/src/main/java/org/kohsuke/github/GitHubPageIterator.java
+++ b/src/main/java/org/kohsuke/github/GitHubPageIterator.java
@@ -1,7 +1,6 @@
 package org.kohsuke.github;
 
 import java.io.IOException;
-import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
@@ -161,8 +160,7 @@ class GitHubPageIterator<T> implements Iterator<T> {
     /**
      * Locate the next page from the pagination "Link" tag.
      */
-    private GitHubRequest findNextURL(GitHubRequest nextRequest, GitHubResponse<T> nextResponse)
-            throws MalformedURLException {
+    private GitHubRequest findNextURL(GitHubRequest nextRequest, GitHubResponse<T> nextResponse) {
         GitHubRequest result = null;
         String link = nextResponse.header("Link");
         if (link != null) {


Test patch:
diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java
index b271dd7ca..9f98835db 100755
--- a/src/test/java/org/kohsuke/github/AppTest.java
+++ b/src/test/java/org/kohsuke/github/AppTest.java
@@ -1058,13 +1058,10 @@ public class AppTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test app.
-     *
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
     @Ignore("Needs mocking check")
     @Test
-    public void testApp() throws IOException {
+    public void testApp() {
         // System.out.println(gitHub.getMyself().getEmails());
 
         // GHRepository r = gitHub.getOrganization("jenkinsci").createRepository("kktest4", "Kohsuke's test",
@@ -1395,12 +1392,9 @@ public class AppTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test issue search.
-     *
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
     @Test
-    public void testIssueSearch() throws IOException {
+    public void testIssueSearch() {
         PagedSearchIterable<GHIssue> r = gitHub.searchIssues()
                 .mentions("kohsuke")
                 .isOpen()
diff --git a/src/test/java/org/kohsuke/github/BridgeMethodTest.java b/src/test/java/org/kohsuke/github/BridgeMethodTest.java
index a4ccdd5d0..a3f25adea 100644
--- a/src/test/java/org/kohsuke/github/BridgeMethodTest.java
+++ b/src/test/java/org/kohsuke/github/BridgeMethodTest.java
@@ -3,7 +3,6 @@ package org.kohsuke.github;
 import org.junit.Assert;
 import org.junit.Test;
 
-import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
@@ -28,12 +27,9 @@ public class BridgeMethodTest extends Assert {
 
     /**
      * Test bridge methods.
-     *
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
     @Test
-    public void testBridgeMethods() throws IOException {
+    public void testBridgeMethods() {
 
         // Some would say this is redundant, given that bridge methods are so thin anyway
         // In the interest of maintaining binary compatibility, we'll do this anyway for a sampling of methods
diff --git a/src/test/java/org/kohsuke/github/GHAutolinkTest.java b/src/test/java/org/kohsuke/github/GHAutolinkTest.java
index 8a09e5b22..203bf7754 100644
--- a/src/test/java/org/kohsuke/github/GHAutolinkTest.java
+++ b/src/test/java/org/kohsuke/github/GHAutolinkTest.java
@@ -184,12 +184,9 @@ public class GHAutolinkTest extends AbstractGitHubWireMockTest {
 
     /**
      * Cleanup.
-     *
-     * @throws Exception
-     *             the exception
      */
     @After
-    public void cleanup() throws Exception {
+    public void cleanup() {
         if (repo != null) {
             try {
                 PagedIterable<GHAutolink> autolinks = repo.listAutolinks();
diff --git a/src/test/java/org/kohsuke/github/GHContentIntegrationTest.java b/src/test/java/org/kohsuke/github/GHContentIntegrationTest.java
index 36151cea4..719382fae 100644
--- a/src/test/java/org/kohsuke/github/GHContentIntegrationTest.java
+++ b/src/test/java/org/kohsuke/github/GHContentIntegrationTest.java
@@ -271,10 +271,8 @@ public class GHContentIntegrationTest extends AbstractGitHubWireMockTest {
      * @param resp
      *            the resp
      * @return the GH commit
-     * @throws Exception
-     *             the exception
      */
-    GHCommit getGHCommit(GHContentUpdateResponse resp) throws Exception {
+    GHCommit getGHCommit(GHContentUpdateResponse resp) {
         return resp.getCommit().toGHCommit();
     }
 
@@ -325,10 +323,8 @@ public class GHContentIntegrationTest extends AbstractGitHubWireMockTest {
      * @param expectedRequestCount
      *            the expected request count
      * @return the int
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    int checkBasicCommitInfo(GitCommit gitCommit, GHCommit ghCommit, int expectedRequestCount) throws IOException {
+    int checkBasicCommitInfo(GitCommit gitCommit, GHCommit ghCommit, int expectedRequestCount) {
         assertThat(gitCommit, notNullValue());
         assertThat(gitCommit.getSHA1(), notNullValue());
         assertThat(gitCommit.getUrl().toString(),
@@ -417,10 +413,8 @@ public class GHContentIntegrationTest extends AbstractGitHubWireMockTest {
      * @param expectedRequestCount
      *            the expected request count
      * @return the int
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    int checkCommitParents(GitCommit gitCommit, GHCommit ghCommit, int expectedRequestCount) throws IOException {
+    int checkCommitParents(GitCommit gitCommit, GHCommit ghCommit, int expectedRequestCount) {
         assertThat(gitCommit.getParentSHA1s().size(), is(greaterThan(0)));
         assertThat(gitCommit.getParentSHA1s().get(0), notNullValue());
         assertThat(ghCommit.getParentSHA1s().size(), is(greaterThan(0)));
diff --git a/src/test/java/org/kohsuke/github/GHLicenseTest.java b/src/test/java/org/kohsuke/github/GHLicenseTest.java
index 89580309b..ff63d2424 100644
--- a/src/test/java/org/kohsuke/github/GHLicenseTest.java
+++ b/src/test/java/org/kohsuke/github/GHLicenseTest.java
@@ -48,12 +48,9 @@ public class GHLicenseTest extends AbstractGitHubWireMockTest {
 
     /**
      * Basic test to ensure that the list of licenses from {@link GitHub#listLicenses()} is returned.
-     *
-     * @throws IOException
-     *             if test fails
      */
     @Test
-    public void listLicenses() throws IOException {
+    public void listLicenses() {
         Iterable<GHLicense> licenses = gitHub.listLicenses();
         assertThat(licenses, is(not(emptyIterable())));
     }
diff --git a/src/test/java/org/kohsuke/github/GHProjectTest.java b/src/test/java/org/kohsuke/github/GHProjectTest.java
index 45f893e30..ffef245ca 100644
--- a/src/test/java/org/kohsuke/github/GHProjectTest.java
+++ b/src/test/java/org/kohsuke/github/GHProjectTest.java
@@ -38,12 +38,9 @@ public class GHProjectTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test created project.
-     *
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
     @Test
-    public void testCreatedProject() throws IOException {
+    public void testCreatedProject() {
         assertThat(project, notNullValue());
         assertThat(project.getName(), equalTo("test-project"));
         assertThat(project.getBody(), equalTo("This is a test project"));
diff --git a/src/test/java/org/kohsuke/github/GHRepositoryForkBuilderTest.java b/src/test/java/org/kohsuke/github/GHRepositoryForkBuilderTest.java
index 2ed56583f..c045ef811 100644
--- a/src/test/java/org/kohsuke/github/GHRepositoryForkBuilderTest.java
+++ b/src/test/java/org/kohsuke/github/GHRepositoryForkBuilderTest.java
@@ -204,12 +204,9 @@ public class GHRepositoryForkBuilderTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test timeout message and sleep count.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void testTimeoutMessage() throws Exception {
+    public void testTimeoutMessage() {
         // For re-recording, use line below to create successful fork test copy, then comment it out and modify json
         // response to 404
         // repo.createFork().name("test-message").create();
diff --git a/src/test/java/org/kohsuke/github/GHRepositoryTest.java b/src/test/java/org/kohsuke/github/GHRepositoryTest.java
index c81b4f292..23fd710db 100644
--- a/src/test/java/org/kohsuke/github/GHRepositoryTest.java
+++ b/src/test/java/org/kohsuke/github/GHRepositoryTest.java
@@ -888,12 +888,9 @@ public class GHRepositoryTest extends AbstractGitHubWireMockTest {
 
     /**
      * Search repositories.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void searchRepositories() throws Exception {
+    public void searchRepositories() {
         PagedSearchIterable<GHRepository> r = gitHub.searchRepositories()
                 .q("tetris")
                 .language("assembly")
@@ -908,12 +905,9 @@ public class GHRepositoryTest extends AbstractGitHubWireMockTest {
 
     /**
      * Search org for repositories.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void searchOrgForRepositories() throws Exception {
+    public void searchOrgForRepositories() {
         PagedSearchIterable<GHRepository> r = gitHub.searchRepositories().org("hub4j-test-org").list();
         GHRepository u = r.iterator().next();
         assertThat(u.getOwnerName(), equalTo("hub4j-test-org"));
@@ -1337,12 +1331,9 @@ public class GHRepositoryTest extends AbstractGitHubWireMockTest {
 
     /**
      * List refs empty tags.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void listRefsEmptyTags() throws Exception {
+    public void listRefsEmptyTags() {
         try {
             GHRepository repo = getTempRepository();
             repo.listRefs("tags").toList();
diff --git a/src/test/java/org/kohsuke/github/GHTagTest.java b/src/test/java/org/kohsuke/github/GHTagTest.java
index 48f990f3d..79b42c564 100644
--- a/src/test/java/org/kohsuke/github/GHTagTest.java
+++ b/src/test/java/org/kohsuke/github/GHTagTest.java
@@ -24,13 +24,10 @@ public class GHTagTest extends AbstractGitHubWireMockTest {
 
     /**
      * Clean up tags.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Before
     @After
-    public void cleanUpTags() throws Exception {
+    public void cleanUpTags() {
         // Cleanup is only needed when proxying
         if (!mockGitHub.isUseProxy()) {
             return;
diff --git a/src/test/java/org/kohsuke/github/GHWorkflowRunTest.java b/src/test/java/org/kohsuke/github/GHWorkflowRunTest.java
index b329857e1..e3727d7c5 100644
--- a/src/test/java/org/kohsuke/github/GHWorkflowRunTest.java
+++ b/src/test/java/org/kohsuke/github/GHWorkflowRunTest.java
@@ -709,7 +709,7 @@ public class GHWorkflowRunTest extends AbstractGitHubWireMockTest {
         assertThat(artifact.isExpired(), is(false));
     }
 
-    private static void checkJobProperties(long workflowRunId, GHWorkflowJob job, String jobName) throws IOException {
+    private static void checkJobProperties(long workflowRunId, GHWorkflowJob job, String jobName) {
         assertThat(job.getId(), notNullValue());
         assertThat(job.getNodeId(), notNullValue());
         assertThat(job.getRepository().getFullName(), equalTo(REPO_NAME));
diff --git a/src/test/java/org/kohsuke/github/GHWorkflowTest.java b/src/test/java/org/kohsuke/github/GHWorkflowTest.java
index 33e3682bb..be3c1bab9 100644
--- a/src/test/java/org/kohsuke/github/GHWorkflowTest.java
+++ b/src/test/java/org/kohsuke/github/GHWorkflowTest.java
@@ -173,7 +173,7 @@ public class GHWorkflowTest extends AbstractGitHubWireMockTest {
         checkWorkflowRunProperties(workflowRuns.get(1), workflow.getId());
     }
 
-    private static void checkWorkflowRunProperties(GHWorkflowRun workflowRun, long workflowId) throws IOException {
+    private static void checkWorkflowRunProperties(GHWorkflowRun workflowRun, long workflowId) {
         assertThat(workflowRun.getWorkflowId(), equalTo(workflowId));
         assertThat(workflowRun.getId(), notNullValue());
         assertThat(workflowRun.getNodeId(), notNullValue());
diff --git a/src/test/java/org/kohsuke/github/GitHubConnectionTest.java b/src/test/java/org/kohsuke/github/GitHubConnectionTest.java
index bb863eae7..384087d0e 100644
--- a/src/test/java/org/kohsuke/github/GitHubConnectionTest.java
+++ b/src/test/java/org/kohsuke/github/GitHubConnectionTest.java
@@ -33,12 +33,9 @@ public class GitHubConnectionTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test offline.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void testOffline() throws Exception {
+    public void testOffline() {
         GitHub hub = GitHub.offline();
         assertThat(GitHubRequest.getApiURL(hub.getClient().getApiUrl(), "/test").toString(),
                 equalTo("https://api.github.invalid/test"));
@@ -259,12 +256,9 @@ public class GitHubConnectionTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test anonymous.
-     *
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
     @Test
-    public void testAnonymous() throws IOException {
+    public void testAnonymous() {
         // we disable this test for JDK 16+ as the current hacks in setupEnvironment() don't work with JDK 16+
         Assume.assumeThat(Double.valueOf(System.getProperty("java.specification.version")), lessThan(16.0));
 
diff --git a/src/test/java/org/kohsuke/github/GitHubStaticTest.java b/src/test/java/org/kohsuke/github/GitHubStaticTest.java
index 729b130a8..a00f4c95b 100644
--- a/src/test/java/org/kohsuke/github/GitHubStaticTest.java
+++ b/src/test/java/org/kohsuke/github/GitHubStaticTest.java
@@ -56,23 +56,17 @@ public class GitHubStaticTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test parse instant.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void testParseInstant() throws Exception {
+    public void testParseInstant() {
         assertThat(GitHubClient.parseInstant(null), nullValue());
     }
 
     /**
      * Test raw url path invalid.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void testRawUrlPathInvalid() throws Exception {
+    public void testRawUrlPathInvalid() {
         try {
             gitHub.createRequest().setRawUrlPath("invalid.path.com");
             fail();
@@ -83,12 +77,9 @@ public class GitHubStaticTest extends AbstractGitHubWireMockTest {
 
     /**
      * Time round trip.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void timeRoundTrip() throws Exception {
+    public void timeRoundTrip() {
         final long stableInstantEpochMilli = 1533721222255L;
         Instant instantNow = Instant.ofEpochMilli(stableInstantEpochMilli);
 
@@ -148,12 +139,9 @@ public class GitHubStaticTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test from record.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void testFromRecord() throws Exception {
+    public void testFromRecord() {
         final long stableInstantEpochSeconds = 11610674762L;
 
         GHRateLimit rateLimit_none = GHRateLimit.fromRecord(new GHRateLimit.Record(9876,
@@ -396,12 +384,9 @@ public class GitHubStaticTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test git hub request get api URL.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void testGitHubRequest_getApiURL() throws Exception {
+    public void testGitHubRequest_getApiURL() {
         assertThat(GitHubRequest.getApiURL("github.com", "/endpoint").toString(),
                 equalTo("https://api.github.com/endpoint"));
 
diff --git a/src/test/java/org/kohsuke/github/GitHubTest.java b/src/test/java/org/kohsuke/github/GitHubTest.java
index f8f352179..2c26f48da 100644
--- a/src/test/java/org/kohsuke/github/GitHubTest.java
+++ b/src/test/java/org/kohsuke/github/GitHubTest.java
@@ -114,12 +114,9 @@ public class GitHubTest extends AbstractGitHubWireMockTest {
 
     /**
      * Search users.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void searchUsers() throws Exception {
+    public void searchUsers() {
         PagedSearchIterable<GHUser> r = gitHub.searchUsers().q("tom").repos(">42").followers(">1000").list();
         GHUser u = r.iterator().next();
         // System.out.println(u.getName());
@@ -129,12 +126,9 @@ public class GitHubTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test list all repositories.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void testListAllRepositories() throws Exception {
+    public void testListAllRepositories() {
         Iterator<GHRepository> itr = gitHub.listAllPublicRepositories().iterator();
         for (int i = 0; i < 115; i++) {
             assertThat(itr.hasNext(), is(true));
@@ -276,12 +270,9 @@ public class GitHubTest extends AbstractGitHubWireMockTest {
 
     /**
      * Test list my authorizations.
-     *
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
     @Test
-    public void testListMyAuthorizations() throws IOException {
+    public void testListMyAuthorizations() {
         PagedIterable<GHAuthorization> list = gitHub.listMyAuthorizations();
 
         for (GHAuthorization auth : list) {
diff --git a/src/test/java/org/kohsuke/github/RequesterRetryTest.java b/src/test/java/org/kohsuke/github/RequesterRetryTest.java
index 5675036a2..81a8b34ec 100644
--- a/src/test/java/org/kohsuke/github/RequesterRetryTest.java
+++ b/src/test/java/org/kohsuke/github/RequesterRetryTest.java
@@ -84,21 +84,16 @@ public class RequesterRetryTest extends AbstractGitHubWireMockTest {
      * Gets the test captured log.
      *
      * @return the test captured log
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public String getTestCapturedLog() throws IOException {
+    public String getTestCapturedLog() {
         customLogHandler.flush();
         return logCapturingStream.toString();
     }
 
     /**
      * Reset test captured log.
-     *
-     * @throws IOException
-     *             Signals that an I/O exception has occurred.
      */
-    public void resetTestCapturedLog() throws IOException {
+    public void resetTestCapturedLog() {
         Logger.getLogger(GitHubClient.class.getName()).removeHandler(customLogHandler);
         Logger.getLogger(OkHttpClient.class.getName()).removeHandler(customLogHandler);
         customLogHandler.close();
diff --git a/src/test/java/org/kohsuke/github/WireMockStatusReporterTest.java b/src/test/java/org/kohsuke/github/WireMockStatusReporterTest.java
index eb1a5e143..bf9f63371 100644
--- a/src/test/java/org/kohsuke/github/WireMockStatusReporterTest.java
+++ b/src/test/java/org/kohsuke/github/WireMockStatusReporterTest.java
@@ -158,12 +158,9 @@ public class WireMockStatusReporterTest extends AbstractGitHubWireMockTest {
 
     /**
      * When snapshot ensure proxy.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Test
-    public void whenSnapshot_EnsureProxy() throws Exception {
+    public void whenSnapshot_EnsureProxy() {
         assumeTrue("Test only valid when Snapshotting (-Dtest.github.takeSnapshot to enable)",
                 mockGitHub.isTakeSnapshot());
 
@@ -172,13 +169,10 @@ public class WireMockStatusReporterTest extends AbstractGitHubWireMockTest {
 
     /**
      * When snapshot ensure record to expected location.
-     *
-     * @throws Exception
-     *             the exception
      */
     @Ignore("Not implemented yet")
     @Test
-    public void whenSnapshot_EnsureRecordToExpectedLocation() throws Exception {
+    public void whenSnapshot_EnsureRecordToExpectedLocation() {
         assumeTrue("Test only valid when Snapshotting (-Dtest.github.takeSnapshot to enable)",
                 mockGitHub.isTakeSnapshot());
 
diff --git a/src/test/java/org/kohsuke/github/extras/okhttp3/OkHttpGitHubConnectorTest.java b/src/test/java/org/kohsuke/github/extras/okhttp3/OkHttpGitHubConnectorTest.java
index d21e853bc..fcca58b93 100644
--- a/src/test/java/org/kohsuke/github/extras/okhttp3/OkHttpGitHubConnectorTest.java
+++ b/src/test/java/org/kohsuke/github/extras/okhttp3/OkHttpGitHubConnectorTest.java
@@ -260,7 +260,7 @@ public class OkHttpGitHubConnectorTest extends AbstractGitHubWireMockTest {
         assertThat("getHitCount", cache.hitCount(), is(maxAgeZeroHitCount));
     }
 
-    private void checkRequestAndLimit(int networkRequestCount, int rateLimitUsed) throws IOException {
+    private void checkRequestAndLimit(int networkRequestCount, int rateLimitUsed) {
         GHRateLimit rateLimitAfter = gitHub.lastRateLimit();
         assertThat("Request Count", getRequestCount(), is(networkRequestCount + userRequestCount));