异常指不按照预期执行,程序出错的情况
java中的所有异常都有一个共同的父类:Throwable.
一.Throwable有两个重要的子类:
1.Exception.程序可以处理的异常
1.运行时异常:空指针异常,数组越界异常等。
2.非运行时异常
2.Error.程序无法处理的错误
二.异常的捕获和处理
五个关键字:try,catch,finally,throw,throws
1. try{
(运行的代码)
}catch(异常类型 异常的变量名){
(异常处理代码)
}finally{
(异常发生总是要执行的代码)
}
//tcatch语句块捕获try代码块中发生的异常并在其代码块中做一场处理,catch语句带一个Throwable类型的参数,表示可捕获异常类型。当try中出现异常时,catch会捕获发生的异常,并和自己的异常类型相匹配,若匹配,则执行catch块中的代码,并将catch块参数指向所抛得异常对象。
//finally语句块是紧跟catch语句后的语句块,这个语句块总是会在方法返回前执行,而 不管是否try语句块是否发生异常。并且这个语句块总是在方法返回前执行。 //try、catch、finally三个语句块均不能单独使用,三者可以组成 try...catch...finally、try...catch、try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个。
// try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。
// 多个catch块时候,只会匹配其中一个异常类并执行catch块代码,而不会再执行别的catch块,并且匹配catch语句的顺序是由上到下。
2.public static void test() throws Exception{ //抛出一个检查异常
throw new Exception("Exception");
}
//throw、throws关键字
//throw关键字是用于方法体内部,用来抛出一个Throwable类型的异常。如果抛出了检查异常,则还应该在方法头部声明方法可能抛出的异常类型。该方法的调用者也必须检查处理抛出的异常。如果所有方法都层层上抛获取的异常,最终JVM会进行处理,处理也很简单,就是打印异常消息和堆栈信息。如果抛出的是Error或RuntimeException,则该方法的调用者可选择处理该异常。
// throws关键字用于方法体外部的方法声明部分,用来声明方法可能会抛出某些异常。仅当抛出了检查异常,该方法的调用者才必须处理或者重新抛出该异常。 当方法的调用者无力处理该异常的时候,应该继续抛出。
java中的所有异常都有一个共同的父类:Throwable.
一.Throwable有两个重要的子类:
1.Exception.程序可以处理的异常
1.运行时异常:空指针异常,数组越界异常等。
2.非运行时异常
2.Error.程序无法处理的错误
二.异常的捕获和处理
五个关键字:try,catch,finally,throw,throws
1. try{
(运行的代码)
}catch(异常类型 异常的变量名){
(异常处理代码)
}finally{
(异常发生总是要执行的代码)
}
//tcatch语句块捕获try代码块中发生的异常并在其代码块中做一场处理,catch语句带一个Throwable类型的参数,表示可捕获异常类型。当try中出现异常时,catch会捕获发生的异常,并和自己的异常类型相匹配,若匹配,则执行catch块中的代码,并将catch块参数指向所抛得异常对象。
//finally语句块是紧跟catch语句后的语句块,这个语句块总是会在方法返回前执行,而 不管是否try语句块是否发生异常。并且这个语句块总是在方法返回前执行。 //try、catch、finally三个语句块均不能单独使用,三者可以组成 try...catch...finally、try...catch、try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个。
// try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。
// 多个catch块时候,只会匹配其中一个异常类并执行catch块代码,而不会再执行别的catch块,并且匹配catch语句的顺序是由上到下。
2.public static void test() throws Exception{ //抛出一个检查异常
throw new Exception("Exception");
}
//throw、throws关键字
//throw关键字是用于方法体内部,用来抛出一个Throwable类型的异常。如果抛出了检查异常,则还应该在方法头部声明方法可能抛出的异常类型。该方法的调用者也必须检查处理抛出的异常。如果所有方法都层层上抛获取的异常,最终JVM会进行处理,处理也很简单,就是打印异常消息和堆栈信息。如果抛出的是Error或RuntimeException,则该方法的调用者可选择处理该异常。
// throws关键字用于方法体外部的方法声明部分,用来声明方法可能会抛出某些异常。仅当抛出了检查异常,该方法的调用者才必须处理或者重新抛出该异常。 当方法的调用者无力处理该异常的时候,应该继续抛出。