`
k_lb
  • 浏览: 856217 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

Exception Rule

 
阅读更多

Exception

Exception异常处理,是Java的重要特性之一。Exception分为两种,一种是System Exception(系统异常),一种是Application Exception(应用程序异常)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

System Exception(系统异常)继承RuntimeException类,不需要显示的catch或者throw

Application Exception(应用程序异常)继承RuntimeException类之外的Exception,必须显示的catch或者throw

(说明: RuntimeException类是Exception类的子类。)

以下的代码throws所有异常。

void func( …) throws Exception{

}

这样的代码,屏蔽了包括系统异常在内的所有异常。在这样的函数中,调用任何有可能抛出异常的代码,也不会有任何编译错误。而且,调用这个函数的代码必须写成如下:

try{

func(..)

}catch(Exception e){

}

以上的代码能够catch包括系统异常在内的所有异常,一般只出现测试程序中。这种异常处理方法屏蔽了所有异常。建议显示的抛出特定的应用程序异常。代码如下:

void func( …) throws ServletException{

// 如果有其它的异常,必须包装成ServletException 抛出

try{

}catch(SQLException e){

throw new ServletException(e);

}

}

调用这个函数的代码写成如下:

try{

func(..)

}catch(ServletException e){

}

// 如果需要catch包括系统异常在内的所有异常,可以在后面加入如下语句。

catch(Exception e){ }

finally

在涉及到资源释放(比如,数据库资源,文件资源)的函数里,函数的出口数目是一个需要考虑的问题。一般的解决方法是,尽量让这种函数只在函数结束处有一个出口。由于逻辑的复杂性,不可能强求做到这一点。可以使用finally机制来控制。

例如,下面的代码

void func( ..) throws ServletException{

if(...)

return; // won’t go finally block

try{

if(…)

return; // will go finally block

}catch(SQLException e){

throw new ServletException(e): // will go finally block

}catch(IOException e){

return; // will go finally block

}finally{

// release resource

}

}

分享到:
评论

相关推荐

    win10安装mysql详细文档--经典.docx

    - **设置服务开机启动**:勾选“Enable root access from remote machines”和“Add Windows Firewall exception rule for MySQL Server”选项,使MySQL服务能够正常启动并被远程访问。 8. **完成配置**:点击...

    Microsoft SQL 2007年认证试题(英文PDF版)

    This is typically done by adding an exception rule for SQL Server or by configuring the firewall to allow incoming traffic on port 1433. --- #### Question 4: Writing Distributed Queries Between Two...

    探索JUnit4扩展:深入Rule

    throw new IllegalArgumentException("Expected exception"); } } ``` 在这个例子中,如果测试方法没有抛出`IllegalArgumentException`,测试将失败。 除了内置的Rule,我们还可以创建自定义Rule来满足特殊需求...

    DROOLS_NPE_rule_extended

    Exception in thread "main" Exception executing consequence for rule "extended" in fr.cea.test: java.lang.NullPointerException at org.drools.core.runtime.rule.impl.DefaultConsequenceExceptionHandler....

    p3c-pmd-2.0.0.jar

    rulesets/java/ali-exception.xml,rulesets/java/ali-flowcontrol.xml,rulesets/java/ali-naming.xml,rulesets/java/ali-oop.xml,rulesets/java/ali-other.xml,rulesets/java/ali-set.xml -f text

    android ndk开发互调示例demo

    在Android应用开发中,NDK(Native Development Kit)是一个重要的工具集,它允许开发者使用C和C++编写部分代码,从而提升性能、处理底层硬件交互或利用现有的C/C++库。JNI(Java Native Interface)是Java平台的...

    AD15 DRC检测错误汇总

    在电子设计自动化(EDA)软件Altium Designer中,Design Rule Check(DRC)是一个至关重要的步骤,用于确保电路板设计符合预设的电气和物理规则。以下是对标题“AD15 DRC检测错误汇总”和描述中提到的常见DRC错误的...

    Android代码-FragmentTestRule

    Fragment Test Rule Test Fragments in isolation. Download androidTestImplementation '...public void clickButton() throws Exception { onView(withText(R.string.button)).perform(click()); onView(with

    Roses基于Spring Boot 2,是开源项目Guns的核心支撑层

    Roses基于Spring Boot 2,是开源项目Guns的核心支撑层,亦可用于任何java项目支撑内核。

    PLSQL coding rule CMM5认证项目

    3. **错误处理**:应使用异常处理结构(如BEGIN...EXCEPTION...END)来捕获和处理程序运行时可能出现的错误。 4. **代码效率**:避免冗余查询,优化SQL语句,减少数据库访问次数,提高执行效率。 5. **安全性**:...

    Java_CodingRule

    本主题主要围绕"Java Coding Rule"展开,我们将深入探讨Java编程中的一些核心规则和最佳实践。 1. **命名规范** - 类名:使用大驼峰命名法,所有单词首字母大写,如`ClassName`。 - 方法名:小驼峰命名,首个单词...

    junit-4-exception-handling-demo

    "junit-4-exception-handling-demo"这个项目显然是一个专注于展示JUnit 4中如何处理异常的示例。在进行单元测试时,异常处理是至关重要的,因为它能确保测试的健壮性和准确性,尤其是在测试可能抛出异常的代码段时。...

    PyPI 官网下载 | aliyun-python-sdk-waf-openapi-1.0.0.tar.gz

    request.add INCIDENTAL_RULE_IDS('rule_id') # 替换为实际规则ID response = client.do_action_with_exception(request) print(response) ``` 4. 查询WAF日志: ```python request = DescribeWafLogRequest....

    邮件模板中的内联CSS库.zip

    use Symfony\Component\CssSelector\Exception\ExceptionInterface; use TijsVerkoyen\CssToInlineStyles\Css\Processor; use TijsVerkoyen\CssToInlineStyles\Css\Property\Processor as PropertyProcessor;...

    python3_r34.zip

    3. **异常处理**:异常类现在直接继承自 `Exception` 类,使得异常处理更加统一。 4. **函数参数**:Python 3 使用 *args 和 **kwargs 传递可变数量的非关键字和关键字参数,增强了函数调用的灵活性。 5. **生成器...

    commons-digester.jar

    public static void main(String[] args) throws Exception { Digester digester = new Digester(); digester.addRuleSet(new ExampleRuleSet()); // 假设有一个名为example.xml的XML文件 try (InputStream ...

    更好的异常处理实现JUnitAPIJava开发Java经验

    @Rule public ExpectedException expectedException = ExpectedException.none(); @Test public void testExpectedExceptionInJUnit4() { expectedException.expect(IllegalArgumentException.class); ...

    SQL Prompt_9.1.4.4532破解版

    SP-6707 : Rule ST002 no longer detects issue on column_alias=expression syntax. SP-6847 : Added support for WITHIN GROUP order clause on STRING_AGG function. SP-6853 : Fix CTE/Cursor formatting error ...

    SQL Prompt_9.1.3.4467破解版

    Enhancement : Code analysis settings page now displays description for selected rule. SP-6581 : Service broker CONVERSATION_HANDLE and CONVERSATION_GROUP_ID are recognized as reserved keywords. SP-...

    Findbugs缺陷详解与英文代号的对照表

    #### rule.findbugs.UL_UNRELEASED_LOCK_EXCEPTION_PATH **多线程错误-方法没有在所有异常路径释放锁** - **解释**: 当方法在异常路径中未释放已持有的锁时,可能导致资源泄漏或线程死锁。 - **建议**: 确保所有可能...

Global site tag (gtag.js) - Google Analytics