相关疑难解决方法(0)

Groovy中的__LINE__功能

可以通过__LINE__Ruby或Perl 获取当前行号.例如:

print "filename: #{__FILE__}, line: #{__LINE__}"
Run Code Online (Sandbox Code Playgroud)

Groovy中是否有相同的功能?

groovy

6
推荐指数
1
解决办法
1438
查看次数

什么是流量控制异常的替代方案?

我继承了一个java应用程序,它处理请求并在确定应该取消请求时抛出异常.对于以前的开发人员来说,例外是很方便的,因为它们是退出不再适用的逻辑树的简单方法(是一个goto),并且它会向日志打印堆栈跟踪,这是一个很好的信息.似乎是论坛和博客上的共识,不应将异常用于流量控制,并且超过一半的处理请求被取消,因此它们绝对不是例外情况.一个参数是性能,它不适用,因为我们的异常代码运行速度足够多年.另一个论点是,它的结果尚不清楚,我同意这一点.我的问题是:替代方案是什么.我唯一能想到的是,如果处理应该继续,则每个方法都返回true,否则返回false.这似乎会使我的代码变得非常膨胀:

checkSomething();
checkSomethingElse();
Run Code Online (Sandbox Code Playgroud)

进入这个:

boolean continueProcessing = false;
continueProcessing = checkSomething();
if (!continueProcessing) {
    return false;
}
continueProcessing = checkSomethingElse();
if (!continueProcessing) {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

那么如果该方法应该返回什么呢?任何指导都会很棒.我真的很想观察可用的"最佳实践".

更新:

我可能应该首先提到的另一个问题是,请求在超过50%的时间内被取消,并不意味着某些事情没有正确,这意味着毕竟不需要请求.

java exception-handling

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

在try catch块中放置一些代码可以阻止JVM进行优化?

从Effective Java中的Exceptions章节:

将代码放在try-catch块中会禁止现有JVM实现可能执行的某些优化

try-catch块为什么以及如何阻止JVM优化?

java try-catch effective-java

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

在java中处理验证的好做法是什么

我有 3 种方法,其中我在大多数内部方法中进行验证。我想知道验证是否失败以及验证失败时的错误消息。我知道我可以使用异常来执行以下操作来传递错误消息..

 String methodA(parms){
        try{
            
            return methodB(params);
        }
        catch(UserDefinedRuntimeException ure){
            return ure.getMessage();
        }
        
    }
    
    String methodB(params){
        try{    
           return  methodC(params);
        }
        catch(UserDefinedRuntimeException ure){
            throw ure;
        }
        catch(Exception otherException){
            //handle Exception
            otherException.printStackTrace();
        }
    }
    
    String methodC(params){
          if(params.equals("A")||params.equals("B")||params.equals("C")){
             return dosomething();
          }
          else{
            throw UserDefinedRuntimeException("invalid input :params should be in [A,B,C]");
          }
    }
Run Code Online (Sandbox Code Playgroud)

但问题是很多人说创建异常很昂贵

所以我通过谷歌搜索我发现了另一种方法

从 Java 中的方法返回状态标志和消息的最佳方法

像下面..

class Response{
        int status;
        String errMsg;
    }
    
    
    String methodA(params){
        
        Response response = methodB(params);
        if(response.status == 1){
            return "success";
        }
        else{
            return response.errMsg;
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java validation exception

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

为什么例外对性能有害?

看到这个问题,每个人都谈论"性能"会如何受到影响,或者当性能成为问题时应该避免例外,等等.

但是我没有看到一个很好的解释,为什么抛出异常对性能不利,这个问题中的每个人似乎都认为这是理所当然的.

我问这个的原因是,我正在尝试优化一个应用程序,并注意到在某些操作上抛出并吞下了几百个异常,例如单击按钮来加载新页面.

java performance exception

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

什么是"堆栈行走"

这是我最近听到的一句话,因为我一直在努力提高我的应用程序的性能.

请看这里这里的例子我的意思.

通常它提到的方式是这样的:"它很慢,因为它涉及到stack walk"

什么stack walk意思/它意味着walk the stack什么?

java performance stack

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

使用java检查数据库中重复值的最佳实践

我使用@Column(unique=true) 在将数据插入数据库之前检查重复值的最佳做法设置了用户名的唯一约束?

  1. 通过捕获程序在尝试插入具有相同用户名的数据时将抛出的异常.
  2. 在尝试插入之前,如果提供的用户名已存在,请检查数据库.

java database unique

3
推荐指数
1
解决办法
1470
查看次数

处理方法的类型异常参数的最有效方法是什么

我有一个方法,它将异常作为特定方法的参数.此方法需要根据异常类型执行不同的逻辑.在以下两种处理方式之间..什么是最有效的方式(有第三种更好的方式)..以及为什么

public void processException(Exception ex) {
   try {
      throw ex;
   } catch(CustomException e1) {
      //do something
   } catch (CustomException2 e2) {
      //do something else
   }
}
Run Code Online (Sandbox Code Playgroud)

要么

public void processException(Exception ex) {
   if (ex instanceof CustomException) {
      // do something
   } else if (ex instanceof CustomException2) {
      // do something else
   }
}
Run Code Online (Sandbox Code Playgroud)

java performance exception

3
推荐指数
1
解决办法
102
查看次数

从字符串中提取数字和名称

我的目标是从java中的字符串中提取名称和数字.示例:输入 - >输出

1234 - >数字:[1234],姓名:[]

1234,34,234 - >数字:[1234,34,234],名称:[]

12,foo,123 - >数字:[12,123],姓名:[foo]

foo3,1234,4bar,12,12foo34 - >数字:[1234,12],姓名:[foo3,4bar,12foo34]

foo,bar - > - > numbers:[],姓名:[foo,bar]

我想出了[^,]+(,?!,+)*匹配字符串的所有部分,但我不知道如何只匹配数字或名称(名称可以包含数字 - 如例子).谢谢

java regex

2
推荐指数
1
解决办法
901
查看次数

返回 true 或 false 或抛出异常

java version "1.7.0_75"
Run Code Online (Sandbox Code Playgroud)

你好,

只是想知道比较以下 2 个函数的首选最佳实践是什么。

第一个抛出应该在调用函数中捕获的 NullPointerException。如果存在空指针异常,则第二个只会返回 false。

抛出异常:

public void disconnect() throws NullPointerException {
    if(mClientConnection == null) {
        throw new NullPointerException("mClientConnection has an invalid reference");
    }

    if(mClientConnection.isConnected()) {
        mClientConnection.disconnect();
    }

    mClientConnection = null;
}
Run Code Online (Sandbox Code Playgroud)

只需返回真或假:

public boolean disconnect() {
    if(mClientConnection == null) {
        log.log(Level.SEVERE, "Cannot disconnect as mClientConnection is null");
        return false;
    }

    if(mClientConnection.isConnected()) {
        mClientConnection.disconnect();
    }

    mClientConnection = null;

    return true;
}
Run Code Online (Sandbox Code Playgroud)

通常在过去,我总是通过返回 true 或 false 来选择第二个。但现在我只是在寻找替代解决方案。

非常感谢您的任何建议,

java optimization

2
推荐指数
1
解决办法
4328
查看次数

asInstance [T]但结果为Option [T]

我有实例和类型,并希望得到Some铸造是可能的,None如果没有.

目前我使用自己的实现:

def tryCast[T](o: Any)(implicit manifest: Manifest[T]): Option[T] = {
  val clazz = manifest.runtimeClass.asInstanceOf[Class[T]]
  if (clazz.isAssignableFrom(o.getClass)) {
    Some(o.asInstanceOf[T])
  } else {
    None
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用标准库中的任何方法吗?

scala

2
推荐指数
1
解决办法
229
查看次数

如何给定类型实现某个接口

我有一个IModelElement接口,以及几个实现该接口的类.我的代码中的某处有以下声明:

Object childClass = request.getNewObjectType();
Run Code Online (Sandbox Code Playgroud)

这里getNewObjectType()返回一个Class对象.我需要检查Class对象是否代表实现IModelElement接口的类,任何人都知道这是如何实现的?

java

0
推荐指数
1
解决办法
92
查看次数

有效地访问地图内的地图并处理可能的异常

我有一个从JSON构建的某个地图,它有一些层次结构.例如:

"2015-05": {
    "129557": {          
        "123456": 3,
        "654321": 2,
        "143526": 1
     }
}
Run Code Online (Sandbox Code Playgroud)

它存储为嵌套映射.我想要一个简单的方法来访问密钥.我可以在每个键上进行多次检查,然后查看它是否存在,然后为第二个键执行,依此类推.然而,这似乎很麻烦.我选择做这样的事情:

def getNumFromMap(key1: String, key2: Int, key3: String): Option[Int] ={
  try{
    map(key1)(key2).get(key3)
  }catch{
    case e: Exception => None
  }
}
Run Code Online (Sandbox Code Playgroud)

此功能可能会被执行数百万次.使用try/catch会降低执行速度吗?有没有更好的方法来实现相同的更快?

scala nested hashmap

0
推荐指数
1
解决办法
87
查看次数