新手小白学JAVA 异常
Posted 程序媛 泡泡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手小白学JAVA 异常相关的知识,希望对你有一定的参考价值。
异常
1 概述
异常是一些用来封装错误信息的对象
它由异常的类型、提示信息、报错的行号提示三部分组成
2 异常的继承结构
3 异常的处理方式
当程序中遇到了异常,通常有两种处理方式:捕获或者向上抛出
当一个方法抛出异常,调用位置可以不做处理继续向上抛出,也可以捕获处理异常
大家可以结合生活中的例子:如果工作中遇到了问题,我们可以选择自己处理(捕获),或者交给上级处理(抛出)
捕获方式:
抛出方式:
在可能会会发生异常的方法上添加代码:
throws 异常类型
例如:public static void main(String[] args) throws Exception{ }
4 练习:异常测试
创建包: cn.tedu.exception
创建类: ExceptionDemo.java
package cn.tedu.exception;
import java.util.InputMismatchException;
import java.util.Scanner;
/**本类用于测试JAVA中异常的入门案例*/
public class ExceptionDemo {
//1.创建入口函数
public static void main(String[] args)throws Exception{
//method();//调用method()--暴露异常
//method1();//调用,method1()--方案一,异常捕获
//method2();//调用,method2()--方案二,异常抛出
f();//创建f()是为了写标准写法,main()调用之前捕获处理异常,不能抛给main()
}
public static void f() {
try {
method2();
} catch (Exception e) {
System.out.println("请输入正确的数据");
}
}
//创建method2(),练习BUG解决方案二
/**总结8:
* 如果方法抛出异常,那么谁调用这个方法,就需要解决这个方法抛出的异常(捕获解决/继续抛出)
* 所以main()调用了method2(),如果main()不捕获处理,就也需要抛出异常
* 但是注意:我们一般会在main()调用之前捕获解决异常,而不是把问题抛给main()
* 因为没人解决了
* */
//public static void method2() throws InputMismatchException,ArithmeticException,Exception{
public static void method2() throws Exception{
//1.复写刚刚可能会发生异常的代码
System.out.println("请输入您要计算的第一个数据:");
int a = new Scanner(System.in).nextInt();
System.out.println("请输入您要计算的第二个数据:");
int b = new Scanner(System.in).nextInt();
System.out.println( a / b );
}
//4.创建method1(),练习BUG解决方案一
/**异常捕获的语法规则:
* try{
* 可能会出现异常的代码
* }catch(异常类型 异常参数名){
* 如果捕获到异常的对应解决方案
* }
* */
public static void method1() {
//5.1按照捕获语法完成try-catch结构
/**总结4:try中放的是可能会出现异常的代码*/
/**总结5:如果发生异常,就会被catch捕获到,执行被匹配到的解决方案*/
try {
//5.2复写刚刚可能会发生异常的代码
System.out.println("请输入您要计算的第一个数据:");
int a = new Scanner(System.in).nextInt();
System.out.println("请输入您要计算的第二个数据:");
int b = new Scanner(System.in).nextInt();
System.out.println( a / b );
}catch(InputMismatchException e) {//异常捕获1
System.out.println("输入类型不正确,请输入正确的整数~");
/**总结6:由于程序中可能出现多种异常,所以catch可以配合多次使用*/
}catch(ArithmeticException e) {//异常捕获2
System.out.println("除数不能为0~");
/**总结7:如果还有上述两种异常之外的异常,用exception匹配捕获
* 这个就是多态最为经典的一种用法,我们不关心子类的类型
* 只要是可解决的异常,都是Exception的子类,多态会把这些异常当做父类型来看
* 进而捕获,使用通用异常解决方案来解决
* */
}catch(Exception e) {//异常捕获3-通用解决方案
System.out.println("请输入正确的数据~");
}
}
//2.创建method()用来人为的暴露异常
public static void method() {
//3.1提示并接收用户输入的数据
System.out.println("请输入您要计算的第一个数据:");
int a = new Scanner(System.in).nextInt();
System.out.println("请输入您要计算的第二个数据:");
int b = new Scanner(System.in).nextInt();
//3.2计算输出除法运算的结果
//输入8和2.2,报错:InputMismatchException[输入不匹配异常]
//输入10和0,报错:ArithmeticException[算术异常,除数不能为0]
System.out.println( a / b );
/**1.不要害怕BUG,真正勇士敢于直面自己写的BUG*/
/**2.学会看报错信息的错误提示,确定自己错误的方向*/
/**3.学会看报错信息的行号提示,哪里报错点哪里
* 注意:源码不会错,要看的是自己写的代码*/
}
}
快捷键小补充:
Ctrl + Shift + T :在eclipse当中查找你想找到的类
Ctrl + T : 查看类的继承结构
Ctrl + O : 查看类的结构信息(大纲)
以上是关于新手小白学JAVA 异常的主要内容,如果未能解决你的问题,请参考以下文章