java底层处理try catch_为什么java到处都要用到try catch?

问:新手学java,在什么情况下要包括try catch啊?

答:普及一点基本知识:

异常的原理机制

当程序中抛出一个异常后,程序从程序中导致异常的代码处跳出,java虚拟机检测寻找和try关键字匹配的处理该异常的catch块,如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。如果没有找到处理该异常的catch块,在所有的finally块代码被执行和当前线程的所属的ThreadGroup的uncaughtException方法被调用后,遇到异常的当前线程被中止。

异常的结构

Java异常结构中定义有Throwable类,Exceotion和Error是其派生的两个子类。其中Exception表示由于网络故障、文件损坏、设备错误、用户输入非法等情况导致的异常,这类异常是可以通过Java异常捕获机制处理的。而Error表示Java运行时环境出现的错误,例如:JVM内存溢出等。

总结说明

异常是程序出问题的一种本能反应,使用try catch表示你能很好处理相应代码块的异常情况,从而避免程序异常中断,反之,你就throws Exception,把异常向上一级抛出。

问:我理解的try catch 是处理异常。难道java有些方法对象 本身就要配合try catch来使用的吗?

答:再普及一点基本知识:

异常的分类

可检测异常:可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则,不捕捉这个异常,编译器就通不过,不允许编译。

非检测异常:非检测异常不遵循处理或者声明规则。在产生此类异常时,不一定非要采取任何适当操作,编译器不会检查是否已经解决了这样一个异常。

总结说明

关于这点问题,建议通过查看相关源代码来分析理解,总的原则就是,只要你调用的方法中带有可检测异常,你就需要处理,try catch是一种方式,或者就throws Exception,把异常向上一级抛出。下面举例说明如下:

(用到try catch的场景)

PrintWriter pw = null;

try {

pw = new PrintWriter(new File(CodeUtil.invoPath, name));

pw.write(str_invo.toString());

} catch (FileNotFoundException e) {

throw new RuntimeException(name+"文件未找到!");

}

(查看相关源代码分析)

public PrintWriter(File file) throws FileNotFoundException {

this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))),

false);

}

(分析总结)

因为构造方法PrintWriter(File file)后面跟了throws FileNotFoundException,所以你调用该构造方法时就必须对它抛出的异常进行处理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值