2. It's a zero value for pointers or pointer-based types. It means the value is uninitialized. *CORRECT*
3. It's equal to empty string: `"" == nil` is true.
## What's an error value?
1. It stores the error details *CORRECT*
2. A global variable which stores the error status.
3. A global constant which stores the error status.
> **2, 3:** There aren't any global variables in Go. There are only package level variables. And, since the error value is just a value, so it can be stored in any variable.
3. The function call is in an indeterministic state. We can't know.
> **1:** Yep. Later on you'll learn that, this is not always true. Sometimes a function can return a non-nil error value, and the returned value may indicate something rather than an error. Search on Google: golang io EOF error if you're curious.
## Does the following program correctly handles the error?
**NOTE:** This is what the `ParseDuration` function looks like:
```go
func ParseDuration(s string) (Duration, error)
```
```go
package main
import (
"fmt"
"time"
)
func main() {
d, err := time.ParseDuration("1h10s")
if err != nil {
fmt.Println(d)
}
}
```
1. Yes. It prints the parsed duration if it's successful.
2. No. It doesn't check for the errors.
3. No. It prints the duration even when there's an error. *CORRECT*
> **1:** Yes, it handles the error; however it does so incorrectly. Something is missing here. Look closely.
>
> **2:** Actually, it does.
>
> **3:** That's right. It shouldn't use the returned value when there's an error.
## Does the following program correctly handles the error?
**NOTE:** This is what the `ParseDuration` function looks like:
```go
func ParseDuration(s string) (Duration, error)
```
```go
package main
import (
"fmt"
"time"
)
func main() {
d, err := time.ParseDuration("1h10s")
if err != nil {
fmt.Println("Parsing error:", err)
return
}
fmt.Println(d)
}
```
1. Yes. It prints the parsed duration if it's successful. *CORRECT*
2. No. It doesn't check for the errors.
3. No. It prints the duration even when there's an error.
> **1:** That's right. When there's an error, it prints a message and it quits from the program.