java异常消息0,JAVA学习---异常

1.认识异常

使程序的正常流程和错误分开处理,促使程序正确的运行,避免崩溃。

1.1了解Java异常

异常的来源:一是程序运行时发生了异常,由下图生成异常实例并抛出,二是开发者来源throw关键字完成抛出,主要是用于提供异常信息

处理动作:抛出异常和捕获异常(调用适合的处理方法)

1.2异常类的继承关系

父类都是Throwable,其子类才可以通过JVM或特定语句抛出异常,主要包括以Exception和Error两种

346fd4d6cb7b4b76c69bf023269c28ed.png

2.异常的处理---捕获处理异常

2.1异常处理过程

22126f69d96b83013aa66d70c42f1de3.png

2.2 try…catch…finally语句

(try…catch结构、try…finally结构、try…catch…finally结构)

2.3 Java7的改进

(允许语句同时捕捉多个可能异常类)

3.常见应用

3.1获取异常信息

方法名

说明

String getMessage()

返回Throwable的详细消息字符串

printStackTrace()

方法将Throwable对象的堆栈跟踪输出至错误输出流

String toString()

返回Throwable的简短描述(描述与定位)

3.2异常的作用和使用原则

获得异常信息与恢复出错的程序使之能够正常运行

3.3常见的异常类

异常类

说明

ArithmeticException

算术异常

NullPointerException

空指针异常。调用了未初始化的或不存在的对象

ArrayIndexOutOfBoundsException

数组下表越界异常。使用的下标超过最大索引值

ClassNotFoundException

指定的类不存在。引用的包名或类名错误

ClassCastException

类转化异常。强制转换数据类型不兼容

NumberFormatException

字符串转换数字异常。字符串转换数字错误

FileNotFoundException

文件未找到异常。打开文件失败

EOFException

输入过程意外到达文件末尾或流尾

IOException

I/O操作意外中断或失败

SQLException

数据库访问错误

//try...catch...finally

public classNException {static int[]getValue(){int[] arry = new int[4];for (int i = 0; i < arry.length; i++) {

arry[i]= (int)(Math.random() * 10);

}returnarry;

}public static voidmain(String[] args) {int nnum = 9, nresult = 0;int[] arry =NException.getValue();

Exception ex= null;try{for (int i = 0; i < arry.length; i++) {

nresult= nnum/arry[i];

System.out.println("nResult的值是:" + nresult + "---数组元素的值是:" +arry[i]);

}

}catch(ArithmeticException e) {

ex=e;

e.printStackTrace();//输出堆栈错误信息//TODO: handle exception

}finally{if(ex != null) {

System.out.println("进入finally:");int[] arry1 =NException.getValue();try{for (int i = 0; i < arry1.length; i++) {

nresult= nnum/arry[i];

System.out.println("出现异常,重新计算nResult的值是:" + nresult + "---数组元素的值是:" +arry1[i]);

}

}catch(ArithmeticException e) {//TODO: handle exception

e.printStackTrace();

}

}

}

}

}

4.异常的抛出

4.1方法头中的throws关键字

方法中可能发生的异常

[(访问修饰符) (修饰符)] 返回值类型 方法名([参数列表])[throws 异常类1, 异常类2, 异常类n]{

//具体

}

4.2方法体中的throw语句

方法中有意识的抛出异常,2种对应处理方法

throw 异常实例名;

5.自定义异常

5.1自定义异常的方法

[修饰符] class 自定义异常类名 extends Exception{...}

//自定义异常

public class MyNumExcption extendsException{publicMyNumExcption(String msg) {super(msg);

}

}importjava.util.Scanner;//计算圆面积

public classCircularArea {static double getArea(double r) throwsMyNumExcption{if (r < 0) { //抛出异常

throw new MyNumExcption("圆半径不应当小于0!");//异常

}double area = 3.14 * r *r;returnarea;

}public static voidmain(String[] args) {double r = 0;double area = -1;

Scanner input= new Scanner(System.in); //获取半径输入

System.out.println("输入半径:");

r=Double.parseDouble(input.next());try{

area=getArea(r);

}catch (MyNumExcption e) { //捕获异常//TODO: handle exception

System.out.println(e);

}

System.out.println("圆面积是:" +area);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值