写数据库代码时候经常会用到try catch 。
但是一下子都把所有的东西写在try里,很显然在错误定位的时候,
很难发现真正错误的原因,而且性能上来说也不是个很好的表率。
看看下面这个:
Transaction trans = db.getTransaction();
try {
trans.begin();
String s_cgbh = Decoder.getParameter(request, "cgbh");
String s_kwmc = Decoder.getParameter(request, "kwmc");
long l_kw = AutoEmbody(request, s_cgbh, s_kwmc);
if (l_kw == 0) {
db.executeUpdate("DELETE FROM SLXX WHERE CGBH='" + s_cgbh + "'");
db.executeUpdate("INSERT INTO SLXX(CGBH,SLDM,SLMC,SLNF,ID) SELECT '" + s_cgbh + "',QKSYDM, QKSYMC,TO_CHAR(SYSDATE,'YYYY'),xmryxx_seq.nextval FROM LWQKXX,SLQK,QKSY WHERE LWQKXX.LSH=SLQK.LWQKLSH AND SLQK.QKSYDM=QKSY.QKSYDM AND LWQKXX.KWMC=' "+ s_kwmc + "'");
}
db.executeUpdate(SqlSciencepaperManager.getSciencepaperInsertSql(request));
trans.commit();
} catch (Exception ex) {
trans.rollback();
throw ex;
}
可以看到这段代码里出现的不规范很多,而且这并不是维护的代码中最突出的。
但是这次特别说明的是代码过多的放到了try中,这样很容易让错误隐藏。
如果这样写就可以避免很多不必要的问题:
Transaction trans = db.getTransaction();
String s_cgbh = Decoder.getParameter(request, "cgbh");
String s_kwmc = Decoder.getParameter(request, "kwmc");
long l_kw = AutoEmbody(request, s_cgbh, s_kwmc);
StringBuffer delSqlBuf = new StringBuffer("DELETE FROM SLXX WHERE CGBH='").append(s_cgbh).append("'");
StringBuffer insertSqlBuf = new StringBuffer(128);
insertSqlBuf.append("INSERT INTO SLXX(CGBH,SLDM,SLMC,SLNF,ID) SELECT '")
.append(s_cgbh).append("',QKSYDM, QKSYMC,TO_CHAR(SYSDATE,'YYYY'),xmryxx_seq.nextval FROM LWQKXX,SLQK,QKSY WHERE LWQKXX.LSH=SLQK.LWQKLSH AND SLQK.QKSYDM=QKSY.QKSYDM AND LWQKXX.KWMC=' ")
.append(s_kwmc).append("'");
try {
trans.begin();
if (l_kw == 0) {
db.executeUpdate(delSqlBuf.toString());
db.executeUpdate(insertSqlBuf.toString());
}
db.executeUpdate(SqlSciencepaperManager.getSciencepaperInsertSql(request));
trans.commit();
} catch (Exception ex) {
trans.rollback();
throw ex;
}
分享到:
相关推荐
3. 读取 Configuration 也有可能出错,需要包一层 Try…Catch…。这意味着在读取 Configuration 时,需要捕捉可能出现的错误,以免影响 robot 的稳定性。 4. 重复出现的逻辑应该提取出来作为单独的模块。这点可以...
编码规范对于开发团队来说至关重要,它有助于保持代码的整洁、一致性和可维护性。尽管给出的【部分内容】在内容上显得零散且有些混乱,但我们可以从中提取和推断出一些可能的编码规范细则。 1. 文件结构和包导入 从...
在系统中,可能有Student类、Teacher类、Course类等,它们封装了各自属性和方法,增强了代码的复用性和可维护性。 8. **异常处理** 为了保证程序的健壮性,VB提供了Try-Catch结构来捕获和处理运行时可能出现的错误...
10. **代码优化**:为了提高程序性能,开发者需要关注代码的效率,避免不必要的计算和内存消耗,同时保持代码的可读性和可维护性。 综上所述,开发C#博饼小程序涵盖了从基础的编程概念到高级的用户界面设计和数据...
在这个项目中,C++用于编写核心逻辑和数据处理部分,确保代码的效率和可维护性。 2. **Qt框架**:Qt是一个跨平台的开发框架,主要用于创建图形用户界面(GUI),同时也支持非GUI应用程序。它提供了丰富的API,方便...
这些状态需要在游戏的不同阶段得到适当的更新和维护。 6. **用户界面**:虽然控制台游戏没有图形化界面,但可以通过巧妙地使用颜色和格式化来提高用户体验。`Console.ForegroundColor`和`Console.BackgroundColor`...
这些基础知识对于任何Java程序员来说都是至关重要的,因为它们构成了编写高效、可维护代码的基础。 首先,我们来谈谈Java的语法。Java是一种静态类型的面向对象编程语言,它引入了类、对象和接口的概念。理解类的...
理解封装、继承和多态这三大面向对象特性对于提升代码的可读性、可维护性和复用性有着重要意义。 封装是隐藏类内部细节,只对外提供公共接口的一种机制。这可以防止代码被错误地修改,同时提高安全性。继承允许一个...
7. **模块化编程**:将功能划分为不同的模块,提高代码复用性和可维护性。 8. **测试和调试**:编写测试用例,使用assert语句检查程序的正确性,学会使用debug工具。 9. **版本控制**:学习使用Git进行版本控制,...
Java,作为一种广泛应用于全球的高级编程语言,深受程序员的喜爱,尤其在企业级应用开发领域有着不可替代的地位。"Java夜未眠.程序员的心声"这个标题不仅揭示了它是一部关于Java编程的学习资料,还寓含了程序员们为...
5. **模板引擎**:为了分离业务逻辑和视图,可能会使用模板引擎(如Smarty)来构建前端界面,使得代码更易维护。 6. **错误处理与日志**:良好的错误处理机制能帮助开发者追踪和修复问题,PHP的`error_reporting()`...
总的来说,《C++软件编程规范和范例》这本书不仅教授编程技巧,还强调了良好的编程习惯和规范,这对于写出可读性高、易于维护的代码至关重要。遵循这些规范,可以提高团队合作效率,减少错误,并为将来更深入的C++...
4. **异常处理**:介绍如何正确使用try-catch-finally语句,以及自定义异常的创建和使用。 5. **输入/输出(I/O)**:涵盖了文件操作、流的概念,以及网络I/O,为处理大量数据和实现通信提供了基础。 6. **多线程**...
4. **异常处理**:C#使用try-catch-finally语句进行错误处理。源码中可能会有各种示例,展示如何捕获和处理运行时可能出现的异常,以提高程序的健壮性。 5. **文件操作**:在C#中,可以使用System.IO命名空间进行...
掌握类的定义、构造函数与析构函数、成员变量与成员函数以及访问修饰符,可以帮助程序员编写模块化、易于维护的代码。 7. 继承与多态 继承是面向对象编程的核心特性之一,它允许程序员根据已有类创建新类,实现代码...
在这个银行取款系统中,Java的强类型、面向对象特性使得代码结构清晰,易于维护。 2. **Swing或JavaFX GUI库**:由于描述提到“界面很好”,我们可以推测开发者可能使用了Swing或JavaFX来构建用户界面。Swing是Java...
这本书的每个章节都对应着一个特定的Java技术或概念,通过实际的代码示例来阐述理论知识,使学习者能够更直观地感受到Java的魅力。 首先,我们来看Java的基础部分,这部分通常包括变量、数据类型、运算符、流程控制...
"两个杜比太简单了"这句话可能是在暗示,仅仅依赖基础的示例是不足以深入理解Python的,我们需要通过解决更复杂的问题来提升技能。 Python的基础知识包括但不限于变量、数据类型(如整型、浮点型、字符串、布尔型)...
这些模式有助于提高代码的可读性和可维护性,也是面试中常被问到的话题。 数据库交互是许多Java应用的核心部分,因此JDBC(Java Database Connectivity)的使用技巧和最佳实践可能也在讨论范围内。此外,随着NoSQL...
4. **宏的创建与录制**:学习如何录制和编辑宏,通过实际操作感受VBA的强大功能,同时掌握宏的安全性和管理。 5. **函数与过程**:掌握Sub过程和Function函数的用法,了解参数传递,以及如何使用内置和自定义函数来...