ternary operation behaves weirdly

Arun :

I have a difficulty in understanding how the ternary operation works in the below code.

public static void main(String[] args) {
        try{
            throw new ArithmeticException("Exception Testing...");
        }catch(Exception e){
            msg = "First Statement : " + e.getCause() != null ? e.getMessage() : null;  //Here e.getCause() is null
            System.out.println(msg);  //  prints "Exception Testing..."
         }
    }

In the first Statement block(Line 4), e.getcause() is null so it should print First Statement: null instead it prints only Exception Testing....

My question is,

1)Why TRUE block got executed in the ternary operation instead of returning null and also,

2)Why First Statement: is not printed with the msg Exception Testing...?

Thanks in advance.

Andy Turner :

Because of operator precedence, + is applied before ?:, so you are checking whether:

"First Statement : " + e.getCause()

is null - it's not.

Add parentheses:

 msg = "First Statement : " + (e.getCause() != null ? e.getMessage() : null);

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=140644&siteId=1