java抛出异常 (try/catch/finally)

博客介绍了Java中异常处理的相关知识。将有风险的代码置于try/catch块,可告知编译器准备处理风险,catch块用于处理异常。方法可用throw抛出异常对象,finally块无论有无异常都会执行,即使try或catch有return。此外,异常还具有多态性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把有风险的程序代码包含在try/catch块中,编译器会放心很多。
因为try/catch块会告诉编译器你确实知道所调用的方法会有风险,并且也准备好要处理它。如果要处理异常情况,就把异常处理程序放在catch块中。

import javax.sound.midi.*;

public class MusicTest1 {
     public void play(){
    	 try{
    	 Sequencer sequencer = MidiSystem.getSequencer(); //把有风险的程序放在try块
    	 System.out.println("We got a sequencer!");
         }catch(MidiUnavailableException ex){   //用catch块拜访异常状况的处理程序
        	 System.out.println("Bummer");
         }
    	 }
     
     public static void main(String[] args){
    	 MusicTest1 mt=new MusicTest1();
    	 mt.play();
     }
}

方法可以用throw关键词抛出异常对象:

public void takeRisk() throws BadException{   //声明异常类型
 if( abandonAllHope){
   throw new FileIsTooSmallException();
   }
 }

finally:无论如何都要执行的部分
finally块是用来存放不管有没有异常都得执行的程序。如果try或catch块有return指令,finally还是会执行!流程会跳到finally然后再回到return指令。

try{
    turnOvenOn();
    x.bake();
} catch(BakingException ex){
   ex.printStackTrace();
} finally{
   turnOvenOff();
}

异常也是多态的,例如:
1.以异常的父类型来声明会抛出的异常:

public void doLaundry() throws ClothingException{
//声明成ClothingException可让你抛出ClothingException的子类异常 
}

2.以所抛出的异常的父类型来catch异常:

try{
  laundry.doLaundry();
} catch(ClothingException cex){   //可以catch任何ClothingException的子类
//解决方案
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值