异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行,造成不必要的损失。
package spzy;
class Exc{//创建一个类
int i=10;//定义一个整型变量并初始化
}
public class ExceptionDemo01 {//创建一个类
public static void main(String[] args) {//主方法
int a=10;//定义一个整型变量并初始化
int b=0;//定义一个整型变量并初始化
int temp=a/b;//计算两个变量的商
System.out.println(temp);//输出结果
}
}
算数异常(程序中的异常)
package spzy;
public class ExceptionDemo1 {//创建一个类
class Exc {//创建一个类
int i =10;//定义一个整型变量并初始化
}
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
int a = 10;//定义一个整型变量并初始化
int b = 0;//定义一个整型变量并初始化
int temp = a/b;//计算两个变量的商
System.out.println(temp);//输出结果
}
}
处理异常
1、异常格式
try{
异常语句
}catch(Exception e){ 对异常进行捕获
}finally{
一定会执行
}
package spzy;
class Exc{//创建一个类
int a=10;//定义一个整型变量并初始化
int b=10;//定义一个整型变量并初始化
}
public class ExceptionDemo01 {//创建一个类
public static void main(String[] args) {//主方法
int temp=0;//定义一个整型变量并初始化
Exc e=null;//创建对象
//e=new Exc();//实例化对象
try{//捕捉异常
temp=e.a/e.b;//计算商
System.out.println(temp);//输出结果
}catch(NullPointerException e2){//处理异常
System.out.println("空指针异常:"+e2);//输出异常信息
}catch(ArithmeticException e2){//处理异常
System.out.println("算数异常:"+e2);//输出异常信息
}
finally{//最后一定会执行的代码
System.out.println("程序推出");//输出信息
}
}
}
同时加多个catch语句模块,进行多个语句处理
package spzy;
public class ExceptionDemo1 {//创建类
class Exc {//创建类
int a = 10;//定义一个整型变量并初始化
int b = 0;//定义一个整型变量并初始化
}
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
int temp = 0;//定义一个整型变量并初始化
Exc e = null;//创建对象
//e =new Exc();实例化对象
try {//捕捉异常
temp = e.a/e.b;//计算商
System.out.println(temp);//输出信息
}catch (NullPointerException e2) { //空指针异常
System.out.println("空指针异常:" +e2);//输出异常数据
}catch (ArithmeticException e2) { //算数异常
System.out.println("算数异常:" +e2);
//加finally不论是否发现异常都会成功推出
}finally {
System.out.println("程序推出");//输出信息
}
}
}
常见异常
1、数组越界异常:ArrayIndexOutOfBoundsException
2、数字格式化异常:NumberFormatException
3、算数异常:ArithmeticException
4、空指针异常:NullPointerException
throws关键字
1、在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,抛给方法的调用者处理。
2、格式:
public void tell() throws Exception{}
package spzy;
public class ExceptionDemo02 {//创建类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
try {//捕获异常
tell(10,0);
}catch(Exception e) { //异常捕获
System.out.println(e);//输出信息
}
}
public static void tell(int i,int j) throws ArithmetivException{ //抛出异常
int temp = 0;//定义一个整型变量并初始化
temp = i/j;//计算商
System.out.println(temp);//输出异常信息
}
}
throw关键字
1、throw关键字抛出的时候直接抛出异常类的实例化对象即可
package spzy;
public class ExceptionDemo02 {//创建类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
try {//捕获异常
throw new Exception("实例化异常对象");//throw抛出
}catch(Exception e) { //异常捕获
System.out.println(e);//输出抛出异常
}
}
}
自定义异常
1、自定义异常直接继承Exception就可以完成自定义异常
package spzy;
class MyException extends Exception{
public MyException(String msg) { //为传输输入参数
super(msg); //通过super来调用Exception里的错误传递
}
}
public class ExceptionDemo3 {//创建类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
try {//捕捉异常
throw new MyException("自定义异常"); //抛出自己的异常
}catch (MyException e) {//异常捕获
System.out.println(e);//输出自定义异常
}
}
}