一.认识异常:
异常是指在程序运行的过程中所发生的不正常事件;
二.Exception类:
1.Exception是所有异常类的父类;在程序运行中,它包含了异常;
2.Exception的常见子类:
ArithmeticException:算术错误异常
NullpointerException:空值针异常
NumberFormatException; 数字格式转换异常;
InputMismatchException: 数据类型异常。
三.异常处理机制
1.使用try与catch处理异常
*1.try:把可能出现异常的代码放入try中:
catch:使用catch 捕捉异常;
例如:package com.yichang.text;
import java.util.Scanner;
public class Kgc {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入被除数");
int num1=scanner.nextInt();
System.out.println("请输入除数");
int num2=scanner.nextInt();
try {
System.out.println(num1/num2);
} catch(Exception e){
System.out.println("输入错误");
System.out.println(e.getMessage());
}
System.out.println("程序结束");
}
*2.printStackTrace(); 输出异常的堆栈信息。
getMessage:返回异常信息,是printStackTrace()输出信息的一部分。
2.try -catch-finally处理异常:
1.finally:无论是否发生异常,finally语句块中的的代码总能被执行。(除出现system.exit(1)不能被执行)
例如:public class Kgc {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入被除数");
int num1=scanner.nextInt();
System.out.println("请输入除数");
int num2=scanner.nextInt();
try {
System.out.println(num1/num2);
} catch(Exception e){
System.out.println("输入错误");
System.out.println(e.getMessage());
system.exit(1);
} finally{
System.out.println("程序结束");
}
}
四.throws声明抛出异常:
1.使用try-catch捕获并处理异常;
2.有Java虚拟机处理异常;
例如如下:
package com.yichang.text;
import java.util.Scanner;
public class Student {
public static void main(String[] args) {
try {
Student student=new Student();
student.getText();
} catch (ArithmeticException e) {
System.out.println("除数不能为0");
} catch (NullPointerException e) {
// TODO Auto-generated catch block
System.out.println("不能为空");
}catch (Exception e) {
System.out.println("未知异常");
}finally{
System.out.println("退出程序");
}
}
public void getText() throws Exception{
Scanner scanner=new Scanner(System.in);
System.out.println("请输入被除数");
int num1=scanner.nextInt();
System.out.println("请输入除数");
int num2=scanner.nextInt();
System.out.println(num1+"/"+num2+"="+num2/num1);
}
}
五.使用throw抛出异常;
throws与throw的区别:
1.作用不同:throw用于程序员自行产生并抛出异常,throws用于声明该方法内抛出了异常。
2.使用的位置不同:throw用于方法内部,可以作为单独语句使用;throws必须跟在方法参数列表的后面,不能单独使用。
3.内容不同:throw抛出一个异常对象;throws后面跟异常类可以多个。