sonarqube - 常犯的错误整理

Posted ctrlzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sonarqube - 常犯的错误整理相关的知识,希望对你有一定的参考价值。

  1. InterruptedExceptions should never be ignored in the code, and simply logging the exception counts in this case as "ignoring". The throwing of the InterruptedException clears the interrupted state of the Thread, so if the exception is not handled properly the fact that the thread was interrupted will be lost. Instead, InterruptedExceptions should either be rethrown - immediately or after cleaning up the method‘s state - or the thread should be re-interrupted by calling Thread.interrupt() even if this is supposed to be a single-threaded application. Any other course of action risks delaying thread shutdown and loses the information that the thread was interrupted - probably without finishing its task.

Similarly, the ThreadDeath exception should also be propagated. According to its JavaDoc:

If ThreadDeath is caught by a method, it is important that it be rethrown so that the thread actually dies.

Noncompliant Code Example
public void run () {
try {
while (true) {
// do stuff
}
}catch (InterruptedException e) { // Noncompliant; logging is not enough
LOGGER.log(Level.WARN, "Interrupted!", e);
}
}
Compliant Solution
public void run () {
try {
while (true) {
// do stuff
}
}catch (InterruptedException e) {
LOGGER.log(Level.WARN, "Interrupted!", e);
// Restore interrupted state...
Thread.currentThread().interrupt();
}
}

以上是关于sonarqube - 常犯的错误整理的主要内容,如果未能解决你的问题,请参考以下文章

小编亲历10个新手UI设计师常犯错误,小编已中招,你呢?

Java程序员常犯的10个错误

《职业经理人常犯的11个错误》——余世维

新手常犯的错误

网站移植到linux上后常犯的错误

[初级]Java开发人员最常犯的10个错误