From 83e0a0a5eefa9a0f134af3fa90f0eeae923ac3af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com> Date: Tue, 13 Jun 2023 07:45:15 +0800 Subject: [PATCH] add try catch --- .../plugin/show/java/JsonJumpJava.java | 12 +++++++++++ .../show/java/doc/OwnerToPsiDocUtils.java | 7 ++++++- .../show/java/doc/PsiMethodToPsiDoc.java | 7 ++++++- .../plugin/show/CopyReferenceSimple.java | 9 +++++++++ .../github/linwancen/plugin/show/LineEnd.java | 16 +++++++++++++++ .../linwancen/plugin/show/LineEndAdd.java | 12 +++++++++++ .../linwancen/plugin/show/LineEndCopy.java | 10 +++++++++- .../io/github/linwancen/plugin/show/Tree.java | 12 +++++++++++ .../show/ext/conf/ConfFileChangeListener.java | 10 +++++++++- .../show/ext/conf/ConfFileInitListener.java | 11 ++++++++-- .../show/ext/conf/ConfFileListener.java | 12 +++++++++-- .../show/ext/conf/ReloadExtDocAction.java | 20 +++++++++++++------ .../show/ext/conf/ResetExtDocAction.java | 20 +++++++++++++------ 13 files changed, 138 insertions(+), 20 deletions(-) diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java b/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java index dab7aff..f18754b 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java @@ -12,6 +12,8 @@ import io.github.linwancen.plugin.show.java.doc.PsiClassUtils; import io.github.linwancen.plugin.show.jump.JsonRef; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.Arrays; @@ -19,8 +21,18 @@ import java.util.List; public class JsonJumpJava extends PsiReferenceContributor { + private static final Logger LOG = LoggerFactory.getLogger(JsonJumpJava.class); + @Override public void registerReferenceProviders(@NotNull PsiReferenceRegistrar registrar) { + try { + register(registrar); + } catch (Exception e) { + LOG.info("JsonJumpJava catch Throwable but log to record.", e); + } + } + + private static void register(@NotNull PsiReferenceRegistrar registrar) { registrar.registerReferenceProvider(PlatformPatterns.psiElement(JsonStringLiteral.class), new PsiReferenceProvider() { @Override diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/OwnerToPsiDocUtils.java b/src/main/idea/io/github/linwancen/plugin/show/java/doc/OwnerToPsiDocUtils.java index aa4a18b..1316ceb 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/OwnerToPsiDocUtils.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/doc/OwnerToPsiDocUtils.java @@ -15,7 +15,12 @@ public class OwnerToPsiDocUtils { @Nullable public static PsiDocComment srcOrByteCodeDoc(@NotNull PsiDocCommentOwner psiDocCommentOwner) { - PsiElement navElement = psiDocCommentOwner.getNavigationElement(); + PsiElement navElement; + try { + navElement = psiDocCommentOwner.getNavigationElement(); + } catch (Exception e) { + return null; + } if (navElement instanceof PsiDocCommentOwner) { psiDocCommentOwner = (PsiDocCommentOwner) navElement; } diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java index ea6f171..6cfa31a 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java @@ -15,7 +15,12 @@ class PsiMethodToPsiDoc { @Nullable static PsiDocComment methodSupperNewPropDoc(@NotNull PsiMethod psiMethod) { // .class - PsiElement navElement = psiMethod.getNavigationElement(); + PsiElement navElement = null; + try { + navElement = psiMethod.getNavigationElement(); + } catch (Exception e) { + return null; + } if (navElement instanceof PsiMethod) { psiMethod = (PsiMethod) navElement; } diff --git a/src/main/java/io/github/linwancen/plugin/show/CopyReferenceSimple.java b/src/main/java/io/github/linwancen/plugin/show/CopyReferenceSimple.java index 4416441..661c335 100644 --- a/src/main/java/io/github/linwancen/plugin/show/CopyReferenceSimple.java +++ b/src/main/java/io/github/linwancen/plugin/show/CopyReferenceSimple.java @@ -28,6 +28,15 @@ public class CopyReferenceSimple extends CopyReferenceAction { @Nullable @Override protected String getQualifiedName(@NotNull Editor editor, List elements) { + try { + return simpleName(editor, elements); + } catch (Exception e) { + return e.toString(); + } + } + + @Nullable + private String simpleName(@NotNull Editor editor, List elements) { // because 2nd param is List in 2020.1 and List in new version //noinspection unchecked String qualifiedName = super.getQualifiedName(editor, elements); diff --git a/src/main/java/io/github/linwancen/plugin/show/LineEnd.java b/src/main/java/io/github/linwancen/plugin/show/LineEnd.java index 055dc52..3504213 100644 --- a/src/main/java/io/github/linwancen/plugin/show/LineEnd.java +++ b/src/main/java/io/github/linwancen/plugin/show/LineEnd.java @@ -15,15 +15,31 @@ import io.github.linwancen.plugin.show.lang.base.BaseLangDoc; import io.github.linwancen.plugin.show.settings.AppSettingsState; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.Collection; import java.util.Collections; +import java.util.List; public class LineEnd extends EditorLinePainter { + private static final Logger LOG = LoggerFactory.getLogger(LineEnd.class); + @Override public @Nullable Collection getLineExtensions(@NotNull Project project, @NotNull VirtualFile file, int lineNumber) { + try { + return getLineExtensionInfos(project, file, lineNumber); + } catch (Throwable e) { + LOG.info("LineEnd catch Throwable but log to record.", e); + return null; + } + } + + @Nullable + private static List getLineExtensionInfos(@NotNull Project project, + @NotNull VirtualFile file, int lineNumber) { @NotNull AppSettingsState settings = AppSettingsState.getInstance(); if (!settings.showLineEndComment) { return null; diff --git a/src/main/java/io/github/linwancen/plugin/show/LineEndAdd.java b/src/main/java/io/github/linwancen/plugin/show/LineEndAdd.java index f8237e6..99acbb6 100644 --- a/src/main/java/io/github/linwancen/plugin/show/LineEndAdd.java +++ b/src/main/java/io/github/linwancen/plugin/show/LineEndAdd.java @@ -15,12 +15,16 @@ import io.github.linwancen.plugin.show.bean.FileInfo; import io.github.linwancen.plugin.show.settings.ShowBundle; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * on ProjectViewPopupMenu */ public class LineEndAdd extends DumbAwareAction { + private static final Logger LOG = LoggerFactory.getLogger(LineEndAdd.class); + @Override public void update(@NotNull AnActionEvent e) { super.update(e); @@ -29,6 +33,14 @@ public class LineEndAdd extends DumbAwareAction { @Override public void actionPerformed(@NotNull AnActionEvent event) { + try { + action(event); + } catch (Throwable e) { + LOG.info("LineEndAdd catch Throwable but log to record.", e); + } + } + + private void action(@NotNull AnActionEvent event) { @Nullable Project project = event.getProject(); if (project == null) { return; diff --git a/src/main/java/io/github/linwancen/plugin/show/LineEndCopy.java b/src/main/java/io/github/linwancen/plugin/show/LineEndCopy.java index 7c81fc3..f006eb4 100644 --- a/src/main/java/io/github/linwancen/plugin/show/LineEndCopy.java +++ b/src/main/java/io/github/linwancen/plugin/show/LineEndCopy.java @@ -11,6 +11,8 @@ import io.github.linwancen.plugin.show.bean.FileInfo; import io.github.linwancen.plugin.show.settings.ShowBundle; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.awt.datatransfer.StringSelection; @@ -19,6 +21,8 @@ import java.awt.datatransfer.StringSelection; */ public class LineEndCopy extends DumbAwareAction { + private static final Logger LOG = LoggerFactory.getLogger(LineEndCopy.class); + @Override public void update(@NotNull AnActionEvent e) { super.update(e); @@ -27,7 +31,11 @@ public class LineEndCopy extends DumbAwareAction { @Override public void actionPerformed(@NotNull AnActionEvent event) { - ApplicationManager.getApplication().runReadAction(() -> copyWithDoc(event)); + try { + ApplicationManager.getApplication().runReadAction(() -> copyWithDoc(event)); + } catch (Throwable e) { + LOG.info("LineEndCopy catch Throwable but log to record.", e); + } } private void copyWithDoc(@NotNull AnActionEvent event) { diff --git a/src/main/java/io/github/linwancen/plugin/show/Tree.java b/src/main/java/io/github/linwancen/plugin/show/Tree.java index fd1d55a..1731a78 100644 --- a/src/main/java/io/github/linwancen/plugin/show/Tree.java +++ b/src/main/java/io/github/linwancen/plugin/show/Tree.java @@ -18,14 +18,26 @@ import io.github.linwancen.plugin.show.lang.base.BaseLangDoc; import io.github.linwancen.plugin.show.settings.AppSettingsState; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.Collection; import java.util.List; public class Tree implements ProjectViewNodeDecorator { + private static final Logger LOG = LoggerFactory.getLogger(Tree.class); + @Override public void decorate(@NotNull ProjectViewNode node, @NotNull PresentationData data) { + try { + decorateImpl(node, data); + } catch (Throwable e) { + LOG.info("Tree catch Throwable but log to record.", e); + } + } + + private void decorateImpl(@NotNull ProjectViewNode node, @NotNull PresentationData data) { if (!AppSettingsState.getInstance().showTreeComment) { return; } diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileChangeListener.java b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileChangeListener.java index 756a705..bd7f86b 100644 --- a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileChangeListener.java +++ b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileChangeListener.java @@ -5,12 +5,16 @@ import com.intellij.openapi.fileEditor.FileEditorManagerListener; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * call ConfCache.loadFile */ public class ConfFileChangeListener implements FileEditorManagerListener { + private static final Logger LOG = LoggerFactory.getLogger(ConfFileChangeListener.class); + @Override public void selectionChanged(@NotNull FileEditorManagerEvent event) { @Nullable VirtualFile file = event.getOldFile(); @@ -18,7 +22,11 @@ public class ConfFileChangeListener implements FileEditorManagerListener { return; } if (file.exists()) { - ConfCache.loadFile(file); + try { + ConfCache.loadFile(file); + } catch (Throwable e) { + LOG.info("ConfFileChangeListener catch Throwable but log to record.", e); + } } } } diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileInitListener.java b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileInitListener.java index 2f67883..2b820c6 100644 --- a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileInitListener.java +++ b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileInitListener.java @@ -3,15 +3,22 @@ package io.github.linwancen.plugin.show.ext.conf; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManagerListener; import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * call ConfCache.loadAll */ public class ConfFileInitListener implements ProjectManagerListener { + private static final Logger LOG = LoggerFactory.getLogger(ConfFileInitListener.class); + @Override public void projectOpened(@NotNull Project project) { - ConfCache.loadAll(project); + try { + ConfCache.loadAll(project); + } catch (Throwable e) { + LOG.info("ConfFileInitListener catch Throwable but log to record.", e); + } } - } diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileListener.java b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileListener.java index dc85098..9942637 100644 --- a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileListener.java +++ b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfFileListener.java @@ -5,6 +5,8 @@ import com.intellij.openapi.vfs.newvfs.BulkFileListener; import com.intellij.openapi.vfs.newvfs.events.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.List; @@ -13,10 +15,16 @@ import java.util.List; */ public class ConfFileListener implements BulkFileListener { + private static final Logger LOG = LoggerFactory.getLogger(ConfFileListener.class); + @Override public void after(@NotNull List events) { - for (@NotNull VFileEvent event : events) { - forEvent(event); + try { + for (@NotNull VFileEvent event : events) { + forEvent(event); + } + } catch (Throwable e) { + LOG.info("ConfFileListener catch Throwable but log to record.", e); } } diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ReloadExtDocAction.java b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ReloadExtDocAction.java index 01eaaf8..a072a41 100644 --- a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ReloadExtDocAction.java +++ b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ReloadExtDocAction.java @@ -8,12 +8,16 @@ import com.intellij.openapi.project.Project; import io.github.linwancen.plugin.show.settings.ShowBundle; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * call ConfCache.loadAll */ public class ReloadExtDocAction extends AnAction { + private static final Logger LOG = LoggerFactory.getLogger(ReloadExtDocAction.class); + @Override public void update(@NotNull AnActionEvent e) { super.update(e); @@ -22,12 +26,16 @@ public class ReloadExtDocAction extends AnAction { @Override public void actionPerformed(@NotNull AnActionEvent e) { - @Nullable Project project = e.getProject(); - if (project == null) { - return; + try { + @Nullable Project project = e.getProject(); + if (project == null) { + return; + } + ConfCache.loadAll(project); + ApplicationManager.getApplication().invokeLater(() -> + ProjectView.getInstance(project).refresh()); + } catch (Throwable t) { + LOG.info("ReloadExtDocAction catch Throwable but log to record.", t); } - ConfCache.loadAll(project); - ApplicationManager.getApplication().invokeLater(() -> - ProjectView.getInstance(project).refresh()); } } diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ResetExtDocAction.java b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ResetExtDocAction.java index ef46c22..7acee8e 100644 --- a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ResetExtDocAction.java +++ b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ResetExtDocAction.java @@ -8,6 +8,8 @@ import com.intellij.openapi.project.Project; import io.github.linwancen.plugin.show.settings.ShowBundle; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * call ConfCache.clearAll @@ -15,6 +17,8 @@ import org.jetbrains.annotations.Nullable; */ public class ResetExtDocAction extends AnAction { + private static final Logger LOG = LoggerFactory.getLogger(ResetExtDocAction.class); + @Override public void update(@NotNull AnActionEvent e) { super.update(e); @@ -23,12 +27,16 @@ public class ResetExtDocAction extends AnAction { @Override public void actionPerformed(@NotNull AnActionEvent e) { - ConfCache.clearAll(); - @Nullable Project project = e.getProject(); - if (project == null) { - return; + try { + ConfCache.clearAll(); + @Nullable Project project = e.getProject(); + if (project == null) { + return; + } + ApplicationManager.getApplication().invokeLater(() -> + ProjectView.getInstance(project).refresh()); + } catch (Throwable t) { + LOG.info("ConfFileChangeListener catch Throwable but log to record.", t); } - ApplicationManager.getApplication().invokeLater(() -> - ProjectView.getInstance(project).refresh()); } }