读developerWorks
Java 错误模式系列文章笔记。
1.
* 模式:
Rogue Tile
* 症状:代码好像表现出前面纠正过的错误依然存在。
* 起因:复制―粘贴代码片段的至少一个副本还包含在其它副本中已经修正了的错误。
* 治疗和预防措施:如果可能,分解出公共代码;否则就对其进行更新。避免复制和粘贴代码。
2.
* 类型:
悬挂复合
* 症状:使用递规定义的数据类型的代码报告一个空指针异常。
* 原因:定义的某些基本例没有给出自己的类,然后以这种方法定义了递归数据类型。相反,空指针被插入到不同的复合数据类型。客户端代码对基本例处理不一致。
* 解决方法和预防措施:确保基本例的表示和检查的一致性。为每个基本例给出一个自己的类
public LinkedList(Object _first) {
this.first = _first;
this.rest = null; // 不应设为null,而应设为new LinkedList()
}
3.
* 模式:
空标志
* 症状:使用空指针作为异常情况的标志的代码块报告 NullPointerException 异常。
* 起因:调用方法没有检查作为返回值的空指针。
* 治疗和预防措施:抛出异常来报告异常情况。
public Object next() {
try {
return internal.readLine();
}
catch (IOException e) {
System.err.println(e.toString());
return null; // 不应返回null,而应throw new NoSuchElementException()
}
}
分享到:
相关推荐
《JAVA学习笔记》实例源代码解析 在编程学习过程中,源代码是理解概念和技术的关键。对于Java初学者,尤其如此。本压缩包中包含的"Example"文件夹,极有可能是《JAVA学习笔记》一书中的实例源代码,旨在帮助读者...
2. **映射ActionServlet**:使用<servlet-mapping>元素将ActionServlet映射到特定的URL模式,通常是`*.do`。 ```xml <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> ...
- **动作(Actions)**:如`<jsp:include>`, `<jsp:forward>`, `<jsp:useBean>`等,它们用于执行特定的操作,如包含其他页面、转发请求、实例化Java Bean等。 在实际开发中,为了提高代码的可读性和维护性,常常...
<artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- Spring5和Thymeleaf整合包 --> <dependency> <groupId>org.thymeleaf</groupId> ...
`<init>`元素用于定义启动时需要初始化的类,`<allow>`元素定义可远程调用的Java类,而`<signatures>`元素则用于指定方法签名,特别是在使用集合或需要特殊转换时。 `<create>`元素的`creator`属性有多个可能的值,...
- **表格标记**:使用`<table>`、`<tr>`、`<td>`等标签创建表格。 - **表单标记**:使用`<form>`标记创建表单。 通过以上内容的学习,我们可以了解到在JavaWeb项目开发中,过滤器的配置对于实现特定功能的重要性...
<result name="input">/pages/input.jsp</result> </action> ``` - **确认Action方法**:确保Action类中存在`go`方法,并且其返回值为`SUCCESS`或`INPUT`等,具体取决于配置文件中的设置。例如: ```java ...
`<c:choose>`标签配合`<c:when>`和`<c:otherwise>`使用,用于实现多条件分支逻辑,类似于Java中的`switch`语句。 ##### 3.3 `<c:forEach>` `<c:forEach>`标签用于实现循环遍历逻辑,可以遍历数组、集合等数据结构...
<load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> ``` 这里的`debug`参数设置为`true`是...
%>`(声明),`<% %>`(脚本片段),和`<%= %>`(表达式),用于编写Java代码。 4. **JSP内置对象**:如`request`, `response`, `session`, `application`, `pageContext`, `out`, `config`和`exception`,它们...
3. **<filter-mapping>**:将过滤器与URL模式关联。这里的`<url-pattern>/*</url-pattern>`表示该过滤器将应用于所有请求。 4. **<listener>**:定义监听器,例如`ReqListener`,监听器监听特定事件,如会话创建、...
- `<url-pattern>`元素指定了过滤器拦截的URL模式,`/*`表示拦截所有请求。 #### 三、Action实现 在Struts2中,Action是处理用户请求的核心组件。 **3. Action实现** - **Action类通常继承自`ActionSupport`类*...
`devMode`设为`true`时,将开启开发者模式,提供更详细的错误信息和额外的日志输出,便于调试。 此外,Struts2的Action可以使用OGNL(Object-Graph Navigation Language)表达式语言来访问和操作对象的属性。例如,...
Map<String, Object> model = new HashMap<>(); model.put("name", "John Doe"); model.put("age", 30); ``` 2. 数据模型与模板结合:使用`Configuration`对象的`processTemplate`或`getTemplate`方法,将数据模型与...
此外,Java 8还提倡使用Option<T>类型来避免空指针异常(NPE),这是函数式编程常见的错误处理方式。 模式匹配是另一个来自于函数式编程的有用概念,它允许在类型匹配时直接提取出具体的值,而不是进行一系列的判断...
【宋红康java笔记】是一份综合性的Java学习资料,由知名编程教育者宋红康编撰。这份压缩包文件包含了大量的Java编程知识点,旨在帮助初学者和有经验的开发者深入理解和掌握Java语言的核心概念与高级特性。以下是根据...
Apache Struts 是一款开源的Java框架,主要用于构建基于MVC(Model-View-Controller)模式的Web应用程序。在深入学习Struts之前,首先要确保你具备Java基础,因为Struts是建立在Java平台上的。根据描述,这篇笔记...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。
- **健壮性**:Java拥有严格的错误检测机制,有助于开发健壮的应用程序。 #### 1.2 运行原理 Java程序的运行分为几个阶段: 1. **编写**:使用文本编辑器编写源代码。 2. **编译**:使用`javac`命令将源代码编译成...
"Java入门第三季学习笔记"可能涵盖了更多高级话题,如反射、注解、设计模式和Java库的使用。反射允许程序在运行时检查类、接口、字段和方法的信息,提供了更大的灵活性。注解是一种元数据,可以用来提供编译器或运行...