关于JAVA t中try-catch的用法

本文详细解释了Java中try-catch语句的工作原理,包括一个try块如何处理多个catch块的情况,以及嵌套try-catch块的执行逻辑。通过具体的代码示例,帮助读者理解异常处理机制。

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



关于JAVA t中try-catch的用法
[问]: 一个try-catch块 是不是只能 捕获一个错误呀? 多重的try-catch(一个try中有N个catch)是能捕获多种错误还是捕获多个错误???还有嵌套的try-catch  是怎么样的逻辑(运行顺序)
[答]:你所说的一个try-catch只能捕获一个错误是对的,不论后面跟着多少个catch都一样,try-catch语句是这样执行的:首先逐个从上到下执行try块中的java语句,如果没有发生异常,则执行完try块后跳过catch块(不论有多少个catch都跳过)。如果try块中某条语句存在异常,则跳到相对应的catch块中(发生什么异常,就跳到什么catch里,如果没有准确对应的,就跳到父类异常的catch中),执行完该catch块中的语句,然后跳过其它的catch块,接着往下走,明白了么?总之,try-catch只能处理一个异常,这就是为什么后面通常跟finally,要有一个统一的出口。
如果还不明白,你就在环境下用一段代码试试就好了,不要着急,随便找两个异常一试就OK!
比如:
try{
   int b=25/0;
   Thread.sleep(2000);
}
catch(ArithmeticException e){
 System.out.println("除零错误!");
}
catch(InterruptedException e){
 System.out.println("延时错误!");
}
上面这个例子就会在屏幕上显示"除零错误!"四个字,因为众所周知,任何数字不能除0,所以25/0是错的,它抛出ArithmeticException(数学异常),则直接跳进第一个catch块内,而没有进入第二个块,尽管Thread.sleep(2000);也有异常。
也就是它遇到一个异常,它就会停止运行下边的语言






sno_guo的注释:

=================ffmpeg中的语句:

try {
FFMpeg ffmpeg = new FFMpeg();
mMovieView = ffmpeg.getMovieView(this);
try {
mMovieView.setVideoPath(filePath);
 } catch (IllegalArgumentException e) {
Log.e(TAG, "Can't set video: " + e.getMessage());
FFMpegMessageBox.show(this, e);
} catch (IllegalStateException e) {
Log.e(TAG, "Can't set video: " + e.getMessage());
FFMpegMessageBox.show(this, e);
} catch (IOException e) {
Log.e(TAG, "Can't set video: " + e.getMessage());
FFMpegMessageBox.show(this, e);
}
setContentView(mMovieView);
} catch (FFMpegException e) {
Log.d(TAG, "Error when inicializing ffmpeg: " + e.getMessage());
FFMpegMessageBox.show(this, e);
finish();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值