# 5.7) What happens if a finally block modifies the value returned from a catch block?

![](https://2172743581-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La4k4liN--SZ6ay4iod%2F-La_2FgCf7Z_C0V4tqCt%2F-La_3bxHP65G_LlA7CCO%2Fimage.png?alt=media\&token=c5271c2c-f63a-4777-a15a-d9604951c504)

```java
public class MultipleReturn {
	int getInt() {
		int returnVal = 10;
		try {
			String[] students = { "Harry", "Paul" };
			System.out.println(students[5]);
		} catch (Exception e) {
			System.out.println("About to return :" + returnVal);
			return returnVal;
		} finally {
			returnVal = returnVal + 10;
			System.out.println("Return value is now :" + returnVal);
		}
		return returnVal;
	}
}
```

```java
public class TestMultipleReturn {
	public static void main(String[] args) {
		MultipleReturn var = new MultipleReturn();
		System.out.println("In main : " + var.getInt());
	}
}
```

![](https://2172743581-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La4k4liN--SZ6ay4iod%2F-La_2FgCf7Z_C0V4tqCt%2F-La_4ozJRjv6FV3n0hYN%2Fimage.png?alt=media\&token=08e971d2-7424-4201-95bf-39b802ba392f)

![](https://2172743581-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La4k4liN--SZ6ay4iod%2F-La_2FgCf7Z_C0V4tqCt%2F-La_4sulgpPgtXPPqtcS%2Fimage.png?alt=media\&token=92759d7f-0832-41ac-ae96-7f2420400171)

```java
public class MultipleReturn {
	StringBuilder getStringBuilder() {
		StringBuilder returnVal = new StringBuilder("10");
		try {
			String[] students = { "Harry", "Paul" };
			System.out.println(students[5]);
		} catch (Exception e) {
			System.out.println("About to return :" + returnVal);
			return returnVal;
		} finally {
			returnVal.append("10");
			System.out.println("Return value is now :" + returnVal);
		}
		return returnVal;
	}
}
```

```java
public class TestMultipleReturn {
	public static void main(String[] args) {
		MultipleReturn var = new MultipleReturn();
		System.out.println("In main : " + var.getStringBuilder());
	}
}
```

![](https://2172743581-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La4k4liN--SZ6ay4iod%2F-La_8bjERI8eslgnFEzY%2F-La_8ubQUY45eNbdNHzX%2Fimage.png?alt=media\&token=00f09d69-099c-4612-91e0-23d13907b2e1)

#### Problem 1: (Explain the output)

```java
public class MultipleReturn {
	StringBuilder getStringBuilder() {
		StringBuilder returnVal = new StringBuilder("10");
		try {
			String[] students = { "Harry", "Paul" };
			System.out.println(students[5]);
		} catch (Exception e) {
			System.out.println("About to return :" + returnVal);
			return returnVal;
		} finally {
			returnVal =  new StringBuilder("1010");
			System.out.println("Return value is now :" + returnVal);
		}
		return returnVal;
	}
}
```

```java
public class TestMultipleReturn {
	public static void main(String[] args) {
		MultipleReturn var = new MultipleReturn();
		System.out.println("In main : " + var.getStringBuilder());
	}
}
```

#### Output:

![](https://2172743581-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La4k4liN--SZ6ay4iod%2F-La_8bjERI8eslgnFEzY%2F-La_9SAqd7hJvCmPi_4X%2Fimage.png?alt=media\&token=d89809ba-979e-4dd8-8843-86c885fefa45)

#### Problem 2: (Explain the output) <a href="#problem-1-explain-the-output" id="problem-1-explain-the-output"></a>

```java
public class MultipleReturn {
	String getString() {
		String returnVal = new String("10");
		try {
			String[] students = { "Harry", "Paul" };
			System.out.println(students[5]);
		} catch (Exception e) {
			System.out.println("About to return :" + returnVal);
			return returnVal;
		} finally {
			returnVal.concat("101");
			System.out.println("Return value is now :" + returnVal);
		}
		return returnVal;
	}
}
```

```java
public class TestMultipleReturn {
	public static void main(String[] args) {
		MultipleReturn var = new MultipleReturn();
		System.out.println("In main : " + var.getString());
	}
}
```

#### Output:

![](https://2172743581-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La4k4liN--SZ6ay4iod%2F-La_8bjERI8eslgnFEzY%2F-La_A25gKq0szlUK6kVO%2Fimage.png?alt=media\&token=d14868f8-f864-4ea3-a70b-10fdaa20a857)

#### Problem 3:

```java
package com.gs.ilp.corejava.excpetionHandling;

class Rx {
	int id;
	String name;
}

public class TestReturn1 {

	public static void main(String[] args) {

		// int i = m1();
		// System.out.println(i);
		 StringBuilder name = m2();
		System.out.println("In main :" + name);
		//Rx c = m3();
		//System.out.println(c.id);

	}

	private static int m1() {
		int i = 8;

		try {
			System.out.println(3 / 0);
		} catch (ArithmeticException e) {
			i = 18;
			return i;
		} finally {
			i = 28;
			System.out.println("Will I execute and what is the value of i in finally : " + i);
		}
		i = 23;
		return i;
	}

	private static StringBuilder m2() {
		StringBuilder i = new StringBuilder("Mohit");

		try {
			System.out.println(3 / 0);
		} catch (ArithmeticException e) {
			i.append("Malhotra");
			return i;
		} finally {
			i = new StringBuilder(i);
			i.append("Mehra");
			System.out.println("Will I execute and what is the value of i in finally : " + i);
		}

		return i;
	}

	private static Rx m3() {
		Rx c = new Rx();
		c.id = 24;
		c.name = "Mogit";

		try {
			System.out.println(3 / 0);
		} catch (ArithmeticException e) {
			c.id = 25;

			return c;
		} finally {
			c.id = 26;
			System.out.println("Will I execute and what is the value of i in finally : " + c.id);
		}

		return c;
	}
}
```

```
Will I execute and what is the value of i in finally : MohitMalhotraMehra
In main :MohitMalhotra
```
