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
}
}
分享到:
相关推荐
- **设置服务开机启动**:勾选“Enable root access from remote machines”和“Add Windows Firewall exception rule for MySQL Server”选项,使MySQL服务能够正常启动并被远程访问。 8. **完成配置**:点击...
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...
throw new IllegalArgumentException("Expected exception"); } } ``` 在这个例子中,如果测试方法没有抛出`IllegalArgumentException`,测试将失败。 除了内置的Rule,我们还可以创建自定义Rule来满足特殊需求...
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....
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(Native Development Kit)是一个重要的工具集,它允许开发者使用C和C++编写部分代码,从而提升性能、处理底层硬件交互或利用现有的C/C++库。JNI(Java Native Interface)是Java平台的...
在电子设计自动化(EDA)软件Altium Designer中,Design Rule Check(DRC)是一个至关重要的步骤,用于确保电路板设计符合预设的电气和物理规则。以下是对标题“AD15 DRC检测错误汇总”和描述中提到的常见DRC错误的...
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的核心支撑层,亦可用于任何java项目支撑内核。
3. **错误处理**:应使用异常处理结构(如BEGIN...EXCEPTION...END)来捕获和处理程序运行时可能出现的错误。 4. **代码效率**:避免冗余查询,优化SQL语句,减少数据库访问次数,提高执行效率。 5. **安全性**:...
本主题主要围绕"Java Coding Rule"展开,我们将深入探讨Java编程中的一些核心规则和最佳实践。 1. **命名规范** - 类名:使用大驼峰命名法,所有单词首字母大写,如`ClassName`。 - 方法名:小驼峰命名,首个单词...
"junit-4-exception-handling-demo"这个项目显然是一个专注于展示JUnit 4中如何处理异常的示例。在进行单元测试时,异常处理是至关重要的,因为它能确保测试的健壮性和准确性,尤其是在测试可能抛出异常的代码段时。...
request.add INCIDENTAL_RULE_IDS('rule_id') # 替换为实际规则ID response = client.do_action_with_exception(request) print(response) ``` 4. 查询WAF日志: ```python request = DescribeWafLogRequest....
use Symfony\Component\CssSelector\Exception\ExceptionInterface; use TijsVerkoyen\CssToInlineStyles\Css\Processor; use TijsVerkoyen\CssToInlineStyles\Css\Property\Processor as PropertyProcessor;...
3. **异常处理**:异常类现在直接继承自 `Exception` 类,使得异常处理更加统一。 4. **函数参数**:Python 3 使用 *args 和 **kwargs 传递可变数量的非关键字和关键字参数,增强了函数调用的灵活性。 5. **生成器...
public static void main(String[] args) throws Exception { Digester digester = new Digester(); digester.addRuleSet(new ExampleRuleSet()); // 假设有一个名为example.xml的XML文件 try (InputStream ...
@Rule public ExpectedException expectedException = ExpectedException.none(); @Test public void testExpectedExceptionInJUnit4() { expectedException.expect(IllegalArgumentException.class); ...
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 ...
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-...
#### rule.findbugs.UL_UNRELEASED_LOCK_EXCEPTION_PATH **多线程错误-方法没有在所有异常路径释放锁** - **解释**: 当方法在异常路径中未释放已持有的锁时,可能导致资源泄漏或线程死锁。 - **建议**: 确保所有可能...