关于JAVA t中try-catch的用法??????????
答案:5 悬赏:20 手机版
解决时间 2021-03-04 22:43
- 提问者网友:蔚蓝的太阳
- 2021-03-04 03:45
关于JAVA t中try-catch的用法??????????
最佳答案
- 五星知识达人网友:爱难随人意
- 2021-03-04 05:05
你所说的一个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);也有异常。
如果还不明白,你就在环境下用一段代码试试就好了,不要着急,随便找两个异常一试就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);也有异常。
全部回答
- 1楼网友:白昼之月
- 2021-03-04 06:56
Catch 后面 不是有个 参数吗?
如果你给个Exception 就是捕获 所有异常啊。。
异常有很多总 有个树型结构图。你看了 就明白了、
如果你给个Exception 就是捕获 所有异常啊。。
异常有很多总 有个树型结构图。你看了 就明白了、
- 2楼网友:人间朝暮
- 2021-03-04 06:23
能捕获多种错误,每个catch 都能捕获相同种类的多个错误,然后做出相应地处理!
但是就看你catch()括号里面怎么写了
如果是catch(Exception e){。。。。}
那么因为这个Exception 是所有异常类的父类,根据java语言多态的特点,这个catch就可以捕获所有的异常类,包括你自己定义的异常类,哈哈,因为你自己定义的异常类,也必须继承Exception类不是?
建议,把前面的继承和多态的概念再好好理解以下,这块就很容易明白了
但是就看你catch()括号里面怎么写了
如果是catch(Exception e){。。。。}
那么因为这个Exception 是所有异常类的父类,根据java语言多态的特点,这个catch就可以捕获所有的异常类,包括你自己定义的异常类,哈哈,因为你自己定义的异常类,也必须继承Exception类不是?
建议,把前面的继承和多态的概念再好好理解以下,这块就很容易明白了
- 3楼网友:独行浪子会拥风
- 2021-03-04 05:53
基本同意楼上的观点,但try-catch捕获的是异常Exception而不是错误Error,Exception与Error的区别:
Exceptions
1.可以是 可被控制(checked) 或 不可控制的(unchecked)
2.表示一个由程序员导致的错误
3.应该在应用程序级被处理
Errors
1.总是 不可控制的(unchecked)
2.经常用来用于表示系统错误或低层资源的错误
3.如何可能的话,应该在系统级被捕捉
需要补充的是:
有N个catch时,应当按从子类到基类的顺序捕捉,
无论是否有异常,finally块的代码都会执行。
Exceptions
1.可以是 可被控制(checked) 或 不可控制的(unchecked)
2.表示一个由程序员导致的错误
3.应该在应用程序级被处理
Errors
1.总是 不可控制的(unchecked)
2.经常用来用于表示系统错误或低层资源的错误
3.如何可能的话,应该在系统级被捕捉
需要补充的是:
有N个catch时,应当按从子类到基类的顺序捕捉,
无论是否有异常,finally块的代码都会执行。
- 4楼网友:鱼芗
- 2021-03-04 05:32
程序所抛出的异常只与try后面众多catch中第一个与合适的想匹配
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯