小编jus*_*ing的帖子

抛出对象中的错误原因/如何处理现代JavaScript中的错误

我正在开发一个包含解析器的小型Node.js包.一旦检测到不可恢复的问题,它就会抛出.

我已经使用Java很多年了,我习惯了大量的异常类.

但这是JavaScript.我想这是一个风格问题.我的基本问题是如何传递错误原因来捕获块.我想到了为不同的错误原因创建不同的错误"类",每个类都处理每个问题的细节,或者将一个错误类作为属性保存.

让我举一个处理这两种错误的例子:

catch(e) {
  if(e instanceof FirstError) {
    ...
  }
  if(e instanceof SecondError) {
    ...
  }
}

catch(err) {
  if(err instanceof AnError) {
    if(err.detail === 'becauseOfA') {
      ...
    }
    if(err.detail === 'becauseOfB') {
      ...
    }
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

哪种方法更好?两者都有效,但我不喜欢第一个.在我看来,许多课程都是一个巨大的开销.

编辑:
我同意使用回调(也在这里回答):

// One class per error type
function(err, ast) {
  if(err) {
    if(err instanceof FirstError) {
      ...
    }
    if(err instanceof SecondError) {
      ...
    }
  }
  ...
}

// One class for all errors
function(err, ast) { …
Run Code Online (Sandbox Code Playgroud)

javascript exception-handling exception try-catch node.js

9
推荐指数
1
解决办法
801
查看次数

应用maven groupId命名约定

我正在开发一些项目(目前组织为eclipse项目).有一个核心项目,主要提供核心API和一些辅助实现和抽象类.所有其他项目都依赖于这个项目.

在将项目集成到我们的maven存储库时,我们遇到了maven命名约定的问题.正如在SO上讨论的那样,groupId通常应该是反向公司域名(com.example)加上项目名称(com.example.foo).maven命名约定为子项目(如plugins(com.example.foo.plugin))提供了额外的后缀.

在我们的例子中,我们没有插件,但核心项目提供的API的多个(大多数是独立的)实现.我们目前的命名建议是:

  • com.example.foo作为所有项目的groupId,虽然它们被分成不同的java包(com.example.foo包含API,com.example.foo.bar包含bar实现)
  • 项目名称为artifactId,没有引用项目的前缀(bar而不是foo-bar)

关键点在于(虽然我们的项目如上所述在包中传播)但它们实际上并不是API核心项目的子项目.

这个建议是否符合maven命名约定?

以防万一:这个问题不是要求提出意见,而是要求对上述问题进行辩论.

java maven

8
推荐指数
1
解决办法
2169
查看次数

Git叉与不同的结构

我拉了一个GitHub存储库并将其添加为VisualStudio中的项目.VS解决方案包含我在第一个项目中对存储库所做的修改所需的其他项目.目前,这些是单独的存储库:

my_solution (<- this should become my new repo without losing the possibility to pull changes from the original repository into locally_forked_project)
  locally_forked_project (repo)
  dependency1 (repo)
  dependency2 (repo)
Run Code Online (Sandbox Code Playgroud)

现在,我想基于我的VS解决方案在GitHub上创建一个原始项目的分支.我希望能够从原始存储库中提取提交,我希望避免在GitHub上使用多个存储库.

我知道的唯一方法是子模块,但据我所知,这些将需要GitHub上的多个存储库.有这个问题的解决方案吗?

这有可能吗?有没有其他方法可以使用多个存储库?

git version-control github repository

8
推荐指数
1
解决办法
128
查看次数

本机代码作为单独的进程与 JNI

我当前的项目涉及一个带有一些现有本机代码的 Android 应用程序。据我所知,我可以将代码用作单独的二进制文件,它将在单独的进程中运行,也可以通过 JNI 使用,从而允许更简单的通信。

JNI 通常应该比 over 方法更受欢迎吗?本机代码(编写为编译成 UNIX 二进制文件)确实依赖于持续的性能。它根本不应该受到其他代码(例如 Android 视图、活动、进程、线程...)的影响,至少在理论上是这样。实际上,我们的目标是尽可能保持其性能。JNI 会不会导致性能问题,尤其是在通信开销和 VM 线程方面?

分离的二进制文件具有以下优点 - 易于维护 - 无需更改现有的本机代码库(当然,兼容性更改除外) - 运行分离的二进制文件的进程可能不太容易受到性能影响比单进程 JNI 解决方案的影响更大。

java-native-interface android android-ndk

5
推荐指数
0
解决办法
912
查看次数