1 回答

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個贊
首先你的 MRE
public class MyClass{
? ? public void myMethod(String let) {
? ? ? ? ? ?switch (let) {
? ? ? ? ? ? ? ?case "A":
? ? ? ? ? ? ? ? ? ?throw new Exception();
? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ?default:
? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ?}
? ? ? }
}
無法編譯
javac --version
javac 11.0.3
因?yàn)橐韵洛e誤
javac MyClass.java
MyClass.java:7: error: unreachable statement
? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ? ?^
MyClass.java:6: error: unreported exception Exception; must be caught or declared to be thrown
? ? ? ? ? ? ? ? ? ?throw new Exception();
? ? ? ? ? ? ? ? ? ?^
2 errors
包含
版本0.8.2 (2018/08/21)
現(xiàn)在,在生成報告期間,可以正確過濾掉 javac 為針對少量情況的值的
switch
語句生成的部分字節(jié)碼(GitHub?#730?)。java.lang.String
所以對于更正的例子
class Example {
? ? public void myMethod(String let) {
? ? ? ? switch (let) {
? ? ? ? case "A":
? ? ? ? ? ? throw new RuntimeException();
? ? ? ? default:
? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? public static void main(String[] args) {
? ? ? ? for (String s : new String[]{"A", "B"}) {
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? new Example().myMethod(s);
? ? ? ? ? ? } catch (Exception ignore) {
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
JaCoCo 0.8.4生成以下預(yù)期報告
javac Example.java -d classes
java -javaagent:jacoco-0.8.4/lib/jacocoagent.jar -cp classes Example
java -jar jacoco-0.8.4/lib/jacococli.jar report \
? ? jacoco.exec \
? ? --classfiles classes \
? ? --sourcefiles . \
? ? --html report
添加回答
舉報