Throwable
int [] nums = new int[3];
try{
num[n] //一切正常,执行这里
}catch(Exception e)
{
num[n] //如果不正常,执行这里(异常)
}
//如果代码出现问题时,使用”异常机制“比选择结构更加方便
1.2异常重点
try catch finally throws throw
处理异常:try catch 或者throws
1.1.1 try catch自己(当前方法)能够处理,使用try catch
try:将可能发生异常的包裹起来
catch:捕获特定类型的异常;捕获时,先写范围小的类型,后写范围大的类型
如果try中的代码发生了异常,则程序不再执行try中异常之后的代码,而是直接 跳到catch中执行
1.1.2 throws自己(当前方法)不能处理,使用throws
public class demo01 {
public static void test01() throws NullPointerException{//抛出异常,抛出给上级,方法调用处
Object obj = null;
obj.equals(" ");//空指针
}
public static void main(String[] args) throws Exception {//继续往上抛出异常(JVM)
test01();
}
}
1.1.3 finally
无论正常,还是异常,始终都会执行的代码
不论执行完try,还是执行完catch,最终都会执行finally的代码
1.即使遇到return,也仍然会执行finally
2.除非虚拟机关闭( System.exit() ),才不会执行finally
1.1.4 throw一般和自定义异常 一起使用
throw:声明异常
jdk中自带了 很多类型的异常,但如果这些内置的异常不能满足项目要求,那么就需要自定义异常。
1.继承Exception,调用super(“异常信息”)
2.使用throw声明一个自定义异常、并且使用try catch /throws
package demo02throw;
public class MyException extends Exception{
public MyException(String message){
super(message);
}
}
class testMyException {
public static void main(String[] args) {
int age = 188;
try{
if(age<0||age>120){
throw new MyException("年龄不得大于120岁");
}
}catch (Exception e){
e.printStackTrace();
e.getMessage();
}
}
}
1.1.5
1.e.printStackTrace(); 打印异常的堆栈信息
2.e.getMessage() 查找异常信息内容



