小编dje*_*lin的帖子

应该何时抛出IllegalArgumentException?

我担心这是一个运行时异常,所以应该谨慎使用它.
标准用例:

void setPercentage(int pct) {
    if( pct < 0 || pct > 100) {
         throw new IllegalArgumentException("bad percent");
     }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎会迫使以下设计:

public void computeScore() throws MyPackageException {
      try {
          setPercentage(userInputPercent);
      }
      catch(IllegalArgumentException exc){
           throw new MyPackageException(exc);
      }
 }
Run Code Online (Sandbox Code Playgroud)

让它回到被检查的例外.

好的,但让我们继续吧.如果输入错误,则会出现运行时错误.首先,这实际上是统一实施的相当困难的政策,因为您可能必须进行相反的转换:

public void scanEmail(String emailStr, InputStream mime) {
    try {
        EmailAddress parsedAddress = EmailUtil.parse(emailStr);
    }
    catch(ParseException exc){
        throw new IllegalArgumentException("bad email", exc);
    }
}
Run Code Online (Sandbox Code Playgroud)

更糟糕的是 - 虽然检查0 <= pct && pct <= 100客户端代码可能需要静态执行,但对于更高级的数据(如电子邮件地址)则更是如此,或者更糟糕的是,必须针对数据库进行检查,因此通常客户端代码无法预先验证.

所以基本上我所说的是我没有看到一个有意义的一致政策使用IllegalArgumentException.它似乎不应该被使用,我们应该坚持我们自己检查的例外.扔这个的好用例是什么?

java exception illegalargumentexception

94
推荐指数
6
解决办法
17万
查看次数

node.js带有查询字符串参数的http'get'请求

我有一个Node.js应用程序,它是一个http客户端(目前).所以我在做:

var query = require('querystring').stringify(propertiesObject);
http.get(url + query, function(res) {
   console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
    console.log("Got error: " + e.message);
});
Run Code Online (Sandbox Code Playgroud)

这似乎是一个很好的方法来实现这一目标.然而,我有点恼火,我不得不url + query迈出这一步.这应该由公共图书馆进行封装,但我不认为这存在于节点的http图书馆还没有,我不知道是什么标准NPM包可能完成它.是否有一种相当广泛使用的方式更好?

url.format方法保存了构建自己的URL的工作.但理想情况下,请求的级别也会高于此级别.

http node.js query-string

65
推荐指数
4
解决办法
15万
查看次数

Java中的稀疏矩阵/数组

我正在开发一个用Java编写的项目,它要求我构建一个非常大的2-D稀疏数组.非常稀疏,如果这有所不同.无论如何:这个应用程序最关键的方面是时间上的效率(假设内存负载,虽然不能无限制地允许我使用标准的2-D阵列 - 关键范围是两个维度的数十亿).

在阵列中的kajillion细胞中,将有数十万个细胞包含一个物体.我需要能够很快地修改单元格内容.

无论如何:有没有人为此目的知道一个特别好的图书馆?它必须是伯克利,LGPL或类似的许可证(没有GPL,因为该产品不能完全开源).或者,如果只有一种非常简单的方法来制作自制的稀疏数组对象,那也没关系.

我正在考虑MTJ,但没有听到任何关于其质量的意见.

java algorithm sparse-array sparse-matrix

63
推荐指数
2
解决办法
5万
查看次数

在bash中将多行输出捕获为数组

如果inner.sh是的话

#...
echo first
echo second
echo third
Run Code Online (Sandbox Code Playgroud)

而且outer.sh

var=`./inner.sh`
# only wants to use "first"...  
Run Code Online (Sandbox Code Playgroud)

如何var通过空格分割?

bash

58
推荐指数
3
解决办法
6万
查看次数

具体对象采用不同构造函数参数时的Java工厂

我正在尝试用Java实现Factory模式.我有一个名为Shape的类,Circle和Triangle扩展.问题是Shape构造函数只获得2个参数,而Circle获得3个参数,因此Triangle(我不会在代码部分显示,因为它与Circle相同).为了更好地展示它:

    private interface ShapeFactory{
        public Shape create(int x, int y);
    }

    private class CircleFactory implements ShapeFactory{
        public Shape create(float radius, int x, int y){ //error
            return new Circle(radius, x,y);
        }
    }
Run Code Online (Sandbox Code Playgroud)

任何想法如何克服这个问题?我不得在工厂内收到用户的意见(必须从外面收到).

谢谢!

java design-patterns factory

48
推荐指数
3
解决办法
2万
查看次数

Java - 关闭内存不足错误

关于如何最好地处理这个问题,我听到了非常矛盾的事情,并且陷入了以下两难境地:

  • OOME带来了一个线程,但不是整个应用程序
  • 我需要关闭整个应用程序,但不能因为线程没有任何内存

我一直都知道最好的做法就是让它们离开以便JVM可以死掉,因为JVM在那时处于不一致的状态,但这似乎不适用于此.

java out-of-memory

47
推荐指数
5
解决办法
3万
查看次数

防止java中死锁的提示

我正在研究java线程和死锁,我理解死锁的例子,但我想知道是否有一般规则要遵循以防止它.

我的问题是,是否有规则或技巧可以应用于java中的源代码以防止死锁?如果是,您能解释一下如何实施吗?

java multithreading deadlock

46
推荐指数
8
解决办法
6万
查看次数

在Java中有效地交换数组元素

我想知道是否有一种更有效的方式在数组中交换两个元素,而不是像这样做:

String temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
Run Code Online (Sandbox Code Playgroud)

嗯,这显然是坏事,甚至是错误的,但我需要经常交换所以我感兴趣,如果有任何Libs或提供更有效的方法来做到这一点?

java

45
推荐指数
6
解决办法
15万
查看次数

在Bash中捕获stdout和stderr

我知道这个语法

var=`myscript.sh`
Run Code Online (Sandbox Code Playgroud)

要么

var=$(myscript.sh)
Run Code Online (Sandbox Code Playgroud)

将捕获结果(stdout)myscript.sh转化为var.我可以重定向stderrstdout,如果我想同时捕获.如何将它们中的每一个保存为单独的变量?

我在这里的用例是如果返回代码非零,我想要回显stderr并禁止其他方式.可能有其他方法可以做到这一点,但这种方法似乎可行,如果它实际上是可能的.

bash stdout pipe stream stderr

41
推荐指数
5
解决办法
5万
查看次数

在字符串中查找最长的重复序列

我需要在字符串中找到最长的序列,但需要注意序列必须重复三次或更多次.所以,例如,如果我的字符串是:

fdwaw4helloworldvcdv1c3xcv3xcz1sda21f2sd1ahelloworldgafgfa4564534321fadghelloworld

然后我想要返回值" helloworld ".

我知道有几种方法可以实现这个目标,但我面临的问题是实际的字符串非常大,所以我真的在寻找一种可以及时完成的​​方法.

python regex string algorithm

40
推荐指数
2
解决办法
2万
查看次数