Java回炉之异常处理

Java回炉之异常处理

try-catch

try{
}catch(XxxException e){
}

try-catch-catch…

try{
}catch(AException ae){
}catch(BException be){
}
//...

try-catch-finally

  • 如果catch中有return,则return前会执行finally中的代码,但**不影响**return的内容。
  • 如果finally中有return,则catch中的return不执行。
try{
}catch(Exception e){
}finally{
}

try-catch(E|E…)

try{
}catch(AException | BException | CException e){
}

try-resource

try {
    FileReader fr = new FileReader("a.txt");
    FileWriter fw = new FileWriter("b.txt");
    int ch = 0;
    while ((ch = fr.read()) != -1) {
        fw.write(ch);
    }
    fw.close();
    fr.close();
} catch (IOException e) {
    e.printStackTrace();
}

// 改进版的代码
try (FileReader fr = new FileReader("a.txt");
        FileWriter fw = new FileWriter("b.txt");) {
    int ch = 0;
    while ((ch = fr.read()) != -1) {
        fw.write(ch);
    }
} catch (IOException e) {
    e.printStackTrace();
}

Exception

  • getMessage():返回异常的详细信息
  • toString():返回异常的简单描述。包括异常全类名、getLocalizedMessage()的返回
  • getLocalizedMessage():默认为getMessage()
  • printStackTrace():获取异常类名和异常信息,以及异常在程序中的位置。返回void
  • printStackTrace(PrintStream):将异常内容保存到日志文件中

throws

抛出自身处理不了的可能出现的异常类
- 写在方法声明后面,跟的是异常类名
- 可以跟多个类名,用逗号隔开
- 异常由该方法的调用者处理
- 可能但不一定会发生异常

public void method() throws Exception{}

throw

运行时抛出遇到的异常对象
- 写在方法体中,跟的是对象
- 只能抛出一个对象
- 异常由方法体内的语句处理
- 表示此处已经抛出异常

public void method() throws Exception{
//...
throw new Exception();
//...
}
public void method(){
//...
try{
//...
throw new Exception();
}catch(Exception e){
//...
}
//...

自定义异常

public class ExText extends Exception{}
  • 子类重写父类方法时,子类方法必须抛出相同异常或其子类异常。
  • 如果父类方法抛出多个异常,子类重写时只能抛出相同的多个异常或其子集,不能抛出父类方法没有抛出的异常。
  • 如果父类方法没有抛出异常,子类重写该方法则不能抛出异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值