异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你用System.out.println(5/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常。 有些异常需要做处理,有些则不需要捕获处理,在下面会详细讲到。
天有不测之风云,人有旦夕祸福,Java的程序代码也如此。在编程过程中,首先应当尽可能去避免错误和异常发生,对于不可避免、不可预测的情况则应考虑异常发生时如何处理。
而在Java中的异常用对象来表示,Java对异常的处理是按异常分类处理的,不同异常有不同的分类,每种异常都对应一个类型(class),每个异常都对应一个异常(类的)对象。
异常类从哪里来?有两个来源,一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。
异常的对象从哪里来呢?有两个来源,一是Java运行时环境自动抛出系统生成的异常,而不管你是否愿意捕获和处理,它总要被抛出!比如除数为0的异常。二是程序员自己抛出的异常,这个异常可以是程序员自己定义的,也可以是Java语言中定义的,用throw 关键字抛出异常,这种异常常用来向调用者汇报异常的一些信息。
异常是针对方法来说的,抛出、声明抛出、捕获和处理异常都是在方法中进行的。
Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。说到这里,可能很多人都不知道throws和throw的区别,其实很简单,
throw用来抛出一个异常,在方法体内。语法格式为:throw 异常对象。 throws用来声明方法可能会抛出什么异常,在方法名后,语法格式为:throws 异常类型1,异常类型2...异常类型n。 如下:
Java代码
import java.io.IOException; public class ThrowsAndThrow { public void test(int a,int b)throws IOException,ArrayIndexOutOfBoundsException{ int c=a/b; if(b==0){ throw new ArithmeticException(); } } }
catch语句可以有多个,用来匹配多个异常,匹配上多个中一个后,执行catch语句块时候仅仅执行匹配上的异常。如果你不理解这句话的意思,可以运行一下下面这段代码:
Java代码
package 完整的异常处理示例; import java.io.*; public class TestException2 { public static void main(String args[]){ int x,y,result; x=5; int a[]={0}; try{ InputStreamReader reader=new InputStreamReader(System.in); BufferedReader input=new BufferedReader(reader); System.out.println("输入除数:"); //读取一行中输入的数字 y=Integer.parseInt(input.readLine()); result=x/y; a[10]=5; System.out.println(result); System.out.println("发生异常时不会被执行的语句"); }catch(ArrayIndexOutOfBoundsException e){//数组越界异常 System.out.println("对数组越界异常进行了处理"); }catch(ArithmeticException e){ System.out.println("对算术异常进行了处理"); }catch(Exception e){ System.out.println("对异常进行了处理"); return; } } }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索异常
, 异常处理
, 方法
, 抛出异常
, java异常
, 语句
, system
, 处理
, 异常抛出
, jnative 异常 java
, arraylistjava异常
, activexjava异常
, c3p0jdbcoracle异常
flexjsp异常
java异常处理、java异常、java中异常处理机制、java异常分类、java异常处理实例,以便于您获取更多的相关知识。