public class Test {
public static int testInt() {
int x = 0;
try {
x = 1;
System.out.println("x=1");
return x;
}
finally {
x = 2;
System.out.println("x=2");
}
}
public static Ref testRef() {
Ref ref = new Ref();
try {
ref.x = 1;
System.out.println("x=1");
return ref;
}
finally {
ref.x = 2;
System.out.println("x=2");
}
}
public static void main(String[] args) {
System.out.println("x=? " + testInt());
System.out.println("x=? " + testRef());
}
private static class Ref {
private int x;
public String toString(){
return String.valueOf(x);
}
}
}
分享到:
相关推荐
- 应尽量避免在`catch`块中只简单地忽略异常,除非你清楚地知道忽略不会导致问题。 - 使用异常来处理程序中不寻常的情况,而不要滥用它们进行正常的流程控制。 - 尽量让异常处理代码简洁明了,提供有用的错误信息...
- 只在不正常的情况下使用异常,避免滥用。 - 在`finally`块中清理资源或使用`try-with-resource`语句。 - 使用标准的异常,避免自定义过多异常类。 - 对异常进行文档说明,提高代码可读性。 - 优先捕获最具体的异常...
- try-catch-finally语句中,finally块总是必须的,用于资源清理。 8. **注释规约**: - 代码的自我解释性优于注释,注释应简洁明了,避免无意义的注释。 - 方法和类的上方应当有简短的注释,描述其功能、参数和...
- 不滥用`catch (Exception e)`,应尽可能精确地捕获并处理异常。 - 在`finally`块中处理资源释放,如关闭流。 5. **类型与变量** - 避免使用原始类型,优先使用对应的包装类。 - 避免使用`public`全局变量,...
- 不要滥用异常处理。 - 尽量捕获具体的异常类型。 - 正确使用`finally`块释放资源。 通过以上内容的深入理解,你可以更好地准备Java面试中关于异常处理的部分,并在实际开发工作中有效地运用这些知识。
- finally块必须处理资源关闭,即使在try或catch中有return或throw语句。 - 异常信息应包含异常发生的原因和位置,便于定位问题。 5. **并发编程**: - 尽量避免使用wait/notify,推荐使用高级并发API如...
异常不应该被滥用作为流程控制手段。它们应保留为表示异常或错误条件的信号。过度使用异常处理可能会降低程序性能,因为抛出和捕获异常都需要一定的开销。 在设计错误处理策略时,应考虑以下几点: 1. 预防优于治疗...
`throws`关键字用于在方法签名中声明可能抛出的异常,这意味着调用该方法的代码必须处理这些异常。例如: ```java public void readFile() throws FileNotFoundException { // 读取文件的代码,可能抛出...
- try-catch-finally:妥善处理异常,finally块用于资源清理。 - 不滥用`catch (Exception e)`,尽可能捕获特定类型的异常。 5. **控制结构** - 避免冗余的if语句,提倡使用三元运算符或switch-case。 - 使用...
2. **避免滥用异常:**异常是用来处理程序中非常规流程的方式,不应作为常规流程的控制手段。 3. **自定义异常:**根据应用需求自定义异常类型,提高异常信息的可读性和可维护性。 4. **适当使用`throw`关键字:**在...
理解如何工作,何时触发GC,以及如何避免内存泄漏是每个Java开发者必须掌握的知识。 - 常见问题包括过度使用静态变量可能导致内存无法释放,以及对对象引用不当造成的内存泄露。 2. **异常处理** - Java的异常...
- 多行注释以`/* */`包围,用于提供较详细的描述,但不应过多,避免滥用。 - Javadoc注释以`/** */`包围,用于生成API文档,格式为`@param`, `@return`, `@throws`等。 3. 缩进与空格: - 使用4个空格进行缩进,...
这一机制通过try-catch-finally语句块来实现,为开发者提供了优雅地处理异常情况的方式。 首先,我们来看一下Java异常处理的优点: 1. **提高程序的健壮性**:通过捕捉和处理异常,程序可以继续执行,而不是因为一...
- 不鼓励空异常处理,避免`try-catch-finally`块中只包含`return`语句。 - 打印堆栈跟踪信息以帮助定位问题,如`e.printStackTrace()`。 4. **设计原则**: - 遵循SOLID原则:单一职责、开闭原则、里氏替换、...
- **规则**:编程时必须严格遵守的规定。 - **建议**:编程时应考虑的约定。 - **说明**:对规则或建议的具体解释。 - **正例**:展示正确实践的例子。 - **反例**:展示错误实践的例子。 #### 三、基本原则 - **易...
- 使用`try-catch-finally`语句块,`finally`块用于资源清理。 7. **访问控制** - 尽可能限制类和方法的访问级别,避免过度公开。 8. **包导入** - 避免导入整个包,尽可能导入具体类。 - 使用`import static`...
- 使用`try-catch-finally`语句块,确保资源的正确关闭。 - 不应捕获所有异常,而应尽可能定位并处理特定异常。 - 异常信息应包含足够的上下文信息,便于问题定位。 5. **集合使用**: - 优先使用`List`、`Set`...
- 原因:滥用反射可能导致安全风险和性能下降。 - 解决方案:限制反射的使用,使用注解和配置文件来控制权限,确保反射操作的安全性。 10. **JDBC操作问题** - 原因:连接池管理不当,SQL编写错误,资源没有正确...