diff --git a/Chapter3-1-6/pom.xml b/Chapter3-1-6/pom.xml
new file mode 100644
index 0000000..87ccab3
--- /dev/null
+++ b/Chapter3-1-6/pom.xml
@@ -0,0 +1,62 @@
+
+
+ 4.0.0
+
+ com.didispace
+ Chapter3-1-6
+ 1.0.0
+ jar
+
+ Chapter3-1-6
+ Spring Boot
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.3.2.RELEASE
+
+
+
+
+ UTF-8
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-thymeleaf
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Chapter3-1-6/src/main/java/com/didispace/Application.java b/Chapter3-1-6/src/main/java/com/didispace/Application.java
new file mode 100755
index 0000000..f7a9e16
--- /dev/null
+++ b/Chapter3-1-6/src/main/java/com/didispace/Application.java
@@ -0,0 +1,22 @@
+package com.didispace;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ *
+ * @author 程序猿DD
+ * @version 1.0.0
+ * @blog http://blog.didispace.com
+ *
+ */
+@SpringBootApplication
+public class Application {
+
+ public static void main(String[] args) {
+
+ SpringApplication.run(Application.class, args);
+
+ }
+
+}
diff --git a/Chapter3-1-6/src/main/java/com/didispace/exception/GlobalExceptionHandler.java b/Chapter3-1-6/src/main/java/com/didispace/exception/GlobalExceptionHandler.java
new file mode 100644
index 0000000..fe97105
--- /dev/null
+++ b/Chapter3-1-6/src/main/java/com/didispace/exception/GlobalExceptionHandler.java
@@ -0,0 +1,21 @@
+package com.didispace.exception;
+
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+
+@ControllerAdvice
+class GlobalExceptionHandler {
+
+ @ExceptionHandler(value = Exception.class)
+ public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
+ ModelAndView mav = new ModelAndView();
+ mav.addObject("exception", e);
+ mav.addObject("url", req.getRequestURL());
+ mav.setViewName("error");
+ return mav;
+ }
+
+}
\ No newline at end of file
diff --git a/Chapter3-1-6/src/main/java/com/didispace/web/HelloController.java b/Chapter3-1-6/src/main/java/com/didispace/web/HelloController.java
new file mode 100755
index 0000000..263ebbc
--- /dev/null
+++ b/Chapter3-1-6/src/main/java/com/didispace/web/HelloController.java
@@ -0,0 +1,29 @@
+package com.didispace.web;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * @author 程序猿DD
+ * @version 1.0.0
+ * @blog http://blog.didispace.com
+ *
+ */
+@Controller
+public class HelloController {
+
+ @RequestMapping("/hello")
+ public String hello() throws Exception {
+ throw new Exception("发生错误");
+ }
+
+ @RequestMapping("/")
+ public String index(ModelMap map) {
+ map.addAttribute("host", "http://blog.didispace.com");
+ return "index";
+ }
+
+}
\ No newline at end of file
diff --git a/Chapter3-1-6/src/main/resources/application.properties b/Chapter3-1-6/src/main/resources/application.properties
new file mode 100755
index 0000000..e69de29
diff --git a/Chapter3-1-6/src/main/resources/templates/error.html b/Chapter3-1-6/src/main/resources/templates/error.html
new file mode 100755
index 0000000..dc521d1
--- /dev/null
+++ b/Chapter3-1-6/src/main/resources/templates/error.html
@@ -0,0 +1,12 @@
+
+
+
+
+ 统一异常处理
+
+
+Error Handler
+
+
+
+
\ No newline at end of file
diff --git a/Chapter3-1-6/src/main/resources/templates/index.html b/Chapter3-1-6/src/main/resources/templates/index.html
new file mode 100755
index 0000000..32cbfe8
--- /dev/null
+++ b/Chapter3-1-6/src/main/resources/templates/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+Hello World
+
+
\ No newline at end of file
diff --git a/Chapter3-1-6/src/test/java/com/didispace/ApplicationTests.java b/Chapter3-1-6/src/test/java/com/didispace/ApplicationTests.java
new file mode 100755
index 0000000..964ba2a
--- /dev/null
+++ b/Chapter3-1-6/src/test/java/com/didispace/ApplicationTests.java
@@ -0,0 +1,35 @@
+package com.didispace;
+
+import com.didispace.web.HelloController;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.SpringApplicationConfiguration;
+import org.springframework.http.MediaType;
+import org.springframework.mock.web.MockServletContext;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+
+/**
+ *
+ * @author 程序猿DD
+ * @version 1.0.0
+ * @blog http://blog.didispace.com
+ *
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringApplicationConfiguration(classes = MockServletContext.class)
+@WebAppConfiguration
+public class ApplicationTests {
+
+
+
+}