java 异常结束_java 异常

带资源的 try 语句

如果一个类实现了 AutoCloseable 接口, 那么可以使用带资源的 try 语句.

它可以在抛出异常或正常结束两种情况调用 close 方法. 当正常结束时没什么可说的,

当其它代码抛出异常时:

如果 close 调用也抛出异常, 那么它的异常会被抑制, 并由 addSuppressed 方法添加到原来的异常中, 后续可以通过 getSuppressed 方法获取被抑制的异常列表;

如果 close 调用成功, 没有抛出异常, 那么就跟之前的情况一致啦.

带资源的 try 语句(try-with-resources)的最简形式:

try (Resource res = ...) {

work with res

}

示例代码:

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.PrintWriter;

import java.util.Scanner;

public class TestTryResource {

public static void main(String[] args) {

try (Scanner in = new Scanner(new FileInputStream("in.txt"), "UTF-8");

PrintWriter out = new PrintWriter("out.txt")) {

while (in.hasNext()) {

String str = in.next();

System.out.println(str);

out.write(str);

}

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

}

使用异常机制的技巧

1. 异常处理不能代替简单的测试

只有在异常情况下使用异常机制. 如下代码, 在使用异常时性能急剧降低:

if (!s.empty()) {

s.pop();

}

try {

s.pop();

} catch (EmptyException e) {

// ignore

}

2. 不要过分地细化异常

将正常处理与异常处理分开, 将异常处理放置在一起, 通过多个 catch 语句管理, 而不是每一个正常处理语句带一个异常处理.

3. 利用异常层次结构

抛出和捕获适当的异常类. 如果可以, 则尽量一种异常转换为另一种更加合适的异常.

建议

解耦 try/catch 和 try/finally 语句, 提高代码清晰度:

try {

try {

code that may throw exceptions

} finally {

do some tings

}

} catch (Exception e) {

show error message

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值