Java为什么要用try catch包围异常啊,为什么要抛出异常啊 目的是什么
为了程序能够不崩,从异常中进行恢复,而且能够进行捕获异常进行处理,最主要的目的是代码的可靠和健壮
这是Java语言设计的时候规定的,它就是通过异常机制来进行错误处理,相对应的还有函数返回值方式来进行错误处理。
在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常。
抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。
捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适 的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适 的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。
对于运行时异常、错误或可查异常,Java技术所要求的异常处理方式有所不同。
由于运行时异常的不可查性,为了更合理、更容易地实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。
对于方法运行中可能出现的Error,当运行方法不欲捕捉时,Java允许该方法不做任何抛出声明。因为,大多数Error异常属于永远不能被允许发生的状况,也属于合理的应用程序不该捕捉的异常。
对于所有的可查异常,Java规定:一个方法必须捕捉,或者声明抛出方法之外。也就是说,当一个方法选择不捕捉可查异常时,它必须声明将抛出异常。
能够捕捉异常的方法,需要提供相符类型的异常处理器。所捕捉的异常,可能是由于自身语句所引发并抛出的异常,也可能是由某个调用的方法或者Java运行时 系统等抛出的异常。也就是说,一个方法所能捕捉的异常,一定是Java代码在某处所抛出的异常。简单地说,异常总是先被抛出,后被捕捉的。
在我看来,Java抛出异常的主要目的是将其错误对用户不可见,顺便可以处理一些比较通用异常,如文件找不到之类的异常等。
越界不是index>list.size()而是index>list.size()-1,记得数组或者链表元的最后一个元素的下标是index>list.size()-1就不会出错了
使用 try..catch能让你及时的补货异常进行不要的处理,像事物回滚这种,还用于一些必要的异常提示信息,不手动处理异常的话,需要抛给上一层进行处理,try..catch太多也不好,对性能有影响,一直向上抛不处理也一样,凡事过犹不及