小编Kor*_*out的帖子

如何处理 Github Actions Workflow 中的长条件表达式

如何最好地处理 GitHub Actions Workflow 中的长条件表达式?

我有一个工作流程,我想在两种情况下运行:

  1. 当拉取请求关闭时
  2. 当在拉取请求上创建包含特定字符串的评论时

这导致工作流定义具有长if表达式:

on:
  pull_request:
    types: [ closed ]
  issue_comment:
    types: [ created ]
jobs:
  do:
    if: ${{ github.event_name == 'pull_request' || (github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, 'specific string')) }}
    steps:
      ...
Run Code Online (Sandbox Code Playgroud)

我看到的一个解决方案是将工作流程分成 2 个定义,但由于 DRY,我想避免这种情况。

我搜索了一些想法,但没有找到以下可行的解决方案:

  • 在多行上定义表达式
  • 将 if 拆分为多个 if 表达式

github-actions

11
推荐指数
1
解决办法
7773
查看次数

HttpServlet 抛出的 ServletException 被 Tomcat 记录为“严重”,尽管以推荐的方式进行处理

问题描述

\n

当我的 HttpServlet 抛出 ServletException 时,Tomcat 会记录一条包含堆栈跟踪的 SEVERE 消息,尽管它已正确重定向到 web.xml 中的另一个 HttpServlet。

\n

Tomcat 使用 stacktrace 记录以下消息:

\n
21-Mar-2015 15:24:57.521 SEVERE [http-nio-8080-exec-28] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [MyHttpServlet] in context with path [/HttpServletExceptionHandler] threw exception [CustomException] with root cause CustomException\nat MyHttpServlet.doGet(MyHttpServlet.java:20)\nat javax.servlet.http.HttpServlet.service(HttpServlet.java:618)\nat javax.servlet.http.HttpServlet.service(HttpServlet.java:725)\nat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)\nat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)\nat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)\nat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)\nat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)\nat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)\nat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)\nat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)\nat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)\nat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)\nat org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)\nat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)\nat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)\nat org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)\nat org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)\nat org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)\nat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)\nat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)\nat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\nat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\nat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\nat java.lang.Thread.run(Thread.java:745)\n
Run Code Online (Sandbox Code Playgroud)\n

我做了什么?

\n

首先,MyHttpServlet 抛出一个 ServletException,在它的 doGet() 方法中包装了一个 CustomException(Exception 的子类):

\n
public class MyHttpServlet extends …
Run Code Online (Sandbox Code Playgroud)

java tomcat servlets exception servletexception

5
推荐指数
1
解决办法
4053
查看次数

我应该在提交消息或内联注释中写下推理吗?

我经常听说提交消息应该描述我进行这些更改的原因。我想我同意这一点。然而,我也经常听说内联注释(即源代码中的注释)应该说明代码为什么以这种特定方式工作,而不是它的作用。

那么,什么时候应该将推理放入提交消息中,什么时候应该将其写在内联注释中呢?是否有一些可以应用的经验法则或最佳实践?

git comments commit-message git-commit

5
推荐指数
1
解决办法
849
查看次数