day18异常2

本文深入探讨了Java中的异常处理机制,包括Error与Exception的区别、如何使用printStackTrace()方法及catch块来处理异常、RuntimeException的特点、throws与throw关键字的用法区别,以及如何自定义异常。

1,Error

-------------------

 是系统级异常程序无法修复比如Outofmemory.... 

尽量避免.error


Exception

-------------------

2,printStackTrace()自己打印异常栈信息,而不是交给jvm打印,jvm收到异常也会打印但会停止程序.

catch 捕获异常实例.

e.getMessage()打印异常信息.


3, RuntimeException (Array out of bounds exception/Arithmatic exception .... ) 是方法默认抛出的

-----------------------------------------------------------

4,throws vs throw

throws插管儿

throw抛具体异常.

----------------------------------------

4,当子类想抛出更多的异常时只能用RuntimeException 来包装.


5,自定义异常类型

*)用来表示与业务中出现的相关异常.

挑选一个适合的父类来继承(Exception 要用户处理 RuntimeException不必处理.)

添加需要的构造方法

不需要另外添加任何代码

String a="a"+"b"+"c";//编译优化之创建一个对象.变量相加会创建多个对象.




<think>好的,用户想了解苍穹外卖项目第二天的学习内容或教程。我需要先整理一下已有的引用内容,看看有哪些相关信息。根据提供的引用[1],第二天主要涉及新增员工功能和分页查询员工功能的实现。引用[2]提到了EmployeeServiceImpl中的update方法,说明员工信息的更新操作,包括参数转换和设置更新时间及用户。引用[4]提到使用了PageHelper插件进行分页处理,这可能与分页查询功能有关。引用[3]中的Redis配置可能用于缓存或其他功能,但确定在day2中具体应用。 首先,用户需要的是day2的学习内容概述,可能包括主要功能模块和技术实现。我需要将这些信息结构化,分点说明。例如,新增员工功能涉及Controller、Service、Mapper层的代码,以及参数转换和异常处理。分页查询则可能使用PageHelper插件,结合DTO接收分页参数,返回PageResult对象。 接下来,需要注意引用中的代码片段,比如EmployeeServiceImpl中的update方法,这里展示了DTO到Entity的转换,以及自动填充更新时间等细节。这可能属于员工信息更新功能的一部分,但根据引用[1],day2的重点是新增和分页查询,所以需要确认update是否属于当天的内容。可能第二天也涉及更新功能,或者后续补充。 另外,引用[4]提到的PageHelper配置是关键,分页查询的实现步骤需要详细说明如何配置依赖、在Service层使用PageHelper.startPage方法,以及如何封装分页结果。 用户可能希望了解具体实现步骤、代码示例以及可能遇到的问题,例如弹幕中提到的“为什么我打开”等问题。需要结合引用中的内容,解释常见问题,如配置是否正确、依赖是否添加、参数传递是否正确等。 最后,生成相关问题时要围绕day2的内容,比如功能实现的技术细节、异常处理、分页插件使用等。确保问题与学习内容紧密相关,帮助用户深入理解。</think>### 苍穹外卖 Day2 学习内容解析 #### 一、核心功能实现 1. **新增员工功能** - **接口设计**:通过`EmployeeController`接收前端提交的`EmployeeDTO`对象,使用`@RequestBody`注解解析JSON数据。 - **参数转换**:将`EmployeeDTO`转为`Employee`实体类,需调用`BeanUtils.copyProperties()`并手动补充字段: ```java Employee employee = new Employee(); BeanUtils.copyProperties(employeeDTO, employee); employee.setCreateTime(LocalDateTime.now()); employee.setUpdateTime(LocalDateTime.now()); ``` - **密码加密**:使用`DigestUtils.md5DigestAsHex`对初始密码(如身份证后6位)进行MD5加密[^2]。 - **异常处理**:通过全局异常捕获器处理用户名重复等业务异常2. **分页查询员工功能** - **分页参数接收**:使用`EmployeePageQueryDTO`对象封装`page`(页码)、`pageSize`(每页条数)、`name`(姓名筛选条件)。 - **PageHelper插件**:在Service层调用`PageHelper.startPage(page, pageSize)`启动分页逻辑,查询结果自动封装为`Page<Employee>`对象[^4]。 - **结果封装**:将`Page<Employee>`转为自定义的`PageResult`对象,包含`total`(总记录数)和`records`(当前页数据列表)。 #### 二、技术实现细节 1. **MyBatis层优化** - **动态SQL**:在Mapper XML中使用`<if>`标签实现条件筛选,例如根据姓名模糊查询: ```xml <select id="pageQuery" resultType="Employee"> SELECT * FROM employee <where> <if test="name != null and name != ''"> name LIKE CONCAT('%',#{name},'%') </if> </where> </select> ``` - **自动填充字段**:通过`MetaObjectHandler`实现`create_time`、`update_time`等字段的自动填充。 2. **代码规范与调试** - **参数校验**:在Controller层使用`@Valid`注解校验`EmployeeDTO`字段(如手机号格式、身份证号规则)。 - **日志追踪**:通过`BaseContext.setCurrentId()`和`BaseContext.getCurrentId()`实现操作人ID的线程级存储。 #### 三、常见问题解决 1. **分页失效**:检查是否在Mapper查询方法前调用`PageHelper.startPage()`,且确保查询方法**仅执行一次SQL**。 2. **字段未更新**:确认实体类中`@TableField(fill = FieldFill.INSERT_UPDATE)`注解是否正确配置。 3. **Redis连接失败**:验证`application.yml`中Redis配置项是否与本地服务一致(特别是密码和端口)[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值