1.什么是异常
异常就是程序执行时的错误
2.如何进行异常处理
import java.util.Scanner;
public class Java29{
public static void main(String [] args){
Scanner input = new Scanner (System.in);
try{
System.out.print("请输入被除数");
int num1=input.nextInt();
System.out.print("请输入除数");
int num2=input.nextInt();
System.out.println(num1/num2);
}catch(ArithmeticException ex){
ex.printStackTrace();//固定语法
}
System.out.println("我也要执行");
}
}
3.try-catch-finally处理异常
try 执行可能发生异常的代码
catch 捕获异常 catch可以写好多个
finally 写在最后,不管前面发不发生错误,解不解决,finally都要往下执行
import java.util.Scanner;
import java.util.InputMismatchException;
public class Java23{
public static void main(String [] args){
Scanner input=new Scanner(System.in);
try{
System.out.print("请输被出除数:");
int num1=input.nextInt();
System.out.print("请输出除数:");
int num2=input.nextInt();
System.out.println(num1/num2);
//当两个包名一样长先后顺序随便写,长的包名写前面
}catch(ArithmeticException ex){
ex.printStackTrace();//把异常的内存信息打印出来
}catch(InputMismatchException ex){
System.out.println("请不要输入数字以外的字符");
}catch(Exception ex){
//Exception ex 顶级异常,万能兜底
System.out.println("可以处理任何异常");
}finally{
System.out.println("finally必须执行");
}
System.out.println("我也要执行");
}
}
4.使用throw、throws抛出异常
throws:声明方法可能要抛出的各种异常
throw:手动抛出异常
public class Java28{
public int eee(int num1,int num2) throws ArithmeticException,Exception{
//业务逻辑异常
if(num1<0){
throw new Exception("num1不是负数");
}
return num1/num2;
}
public static void main (String [] args){
Java28 md=new Java28();
try{
md.eee(1,0);
}catch(ArithmeticException e){
System.out.println("我输错了");
}catch(Exception ex){
System.out.println("我不能输负数");
}
}
}
5.掌握异常及其分类
异常类型: | 说明: |
Exception | 异常层次结构的父类 |
ArithmeticException | 算数错误情形,如以零为除数 |
ArraylndexOutOfBoundsException | 数组下标越界 |
NullPointerException | 尝试访问null对象成员 |
ClassNotFoundException | 不能加载所需的类 |
lllegalArgumentException | 方法接收到非法参数 |
ClassCastException | 对象强制类型转换出错 |
NumberFormatException | 数字格式转换异常,如把“abc”转换为数字 |
//数组越界异常 ArrayIndexOutOfBoundsException
public class Java24{
public static void main (String [] args){
int [] arr = {1,2};
//数组一共两个不能等于2
for(int i=0;i<=2;i++){
System.out.println(arr[i]);
}
}
}
//空指针异常 NullPointerException
public class Java25{
public static void main (String [] args){
String [] arr = new String[2];
//没有给值 length算不出长度
//String [] arr = {"zs","ls"};
for(int i=0;i<2;i++){
System.out.prinltn(arr[i].length());
}
}
}
//ClassNotFoundException 担心你找不到类
public class Java26{
public static void main (String [] args){
Object obj = Class.forName("Teacher01");
}
}
//NumberFormatException
public class Java30{
public static void main (String [] args){
Integer.parseInt("1 ");
}
}