/**
* 作者:kuma
* 版本:v1.0
* */
public class study_9_5
{
public static void main(String[] args)
{
//异常机制
/*
* 异常:就是程序在运行时出现不正常情况
* 异常由来:问题也是现实生活中一个具体的事物,也可以通过java类的形式进行藐视,并封装成对象
* 其实就是java对不正常情况进行描述后的对象体现
*
* 对于问题的划分:两种:一种是严重的问题,一种是非严重的问题
*
* 对于严重的,java通过Error类进行描述
* 对于Error一般不编写针对性的代码对其进行处理
* 对于非严重的,java通过Exception类进行描述
* 对于Exception可以使用针对性的处理方式进行处理
*
* 无论Error或者Exception都具有一些共性内容
* 比如:不正常情况的信息,引发原因等。
*
* 他们有一个共同的父类:Throwable,Error和Exception都是它的子类
*
*
* 2.异常的处理
* java提供了特有的语句进行处理
* try
* {
* 需要被检测的代码
* }
* catch(异常类 变量)
* {
* 处理异常的代码;(处理方式)
* }
* finally
* {
* 一定会执行的语句
* }
*
* 3.对捕获到的异常对象进行常见方法操作
* e.getMessage();获取异常信息
*
* 在函数上声明异常。
* 便于提高安全性,让调用处进行处理,不处理编译失败
*
*
*
* 对多异常的处理
* 1.声明异常时,建议声明更为具体的异常。这样处理的可以更具体
* 2.对方声明几个异常,就对应有几个catch块,不要定义多余的catch块。
* 如果多个catch块中的异常出现继承关系,父类异常catch块放在最下边
*
* 建立在进行catch处理时,catch中一定要定义具体处理方式
* 不要简单定义一句e.printStackTrace()
* 也不要简单地就写一句输出语句。
* */
femo d=new femo();
try
{
int x=d.div(4,0);//try检测到异常,就扔给catch
System.out.println("x="+x);
}
//try内无问题,catch不运行
//catch块按顺序运行
catch(ArithmeticException e)//多态,引用变量,不管抛什么异常,父类都可以接受
{
System.out.println("除零了");
System.out.println(e.getMessage());
e.printStackTrace();//其实jvm默认的异常处理机制,就是在调用此方法
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("角标越界啦");
System.out.println(e.getMessage());
}
System.out.println("over");
}
}
class femo
{
int div(int a,int b)throws ArithmeticException,ArrayIndexOutOfBoundsException//在功能上通过throws的关键字声明了该功能有可能会出现问题
{
int[] arr=new int[a];
System.out.println(arr[4]);
//catch不能同时发生,只能发生一个,抛出异常,程序就已经结束了
//主程序不处理这个函数,编译不通过,不让用
//调用这个函数必须try catch
return a/b;
}
}
java异常处理
最新推荐文章于 2024-10-01 18:51:18 发布