Java第十三次作业

1.认识异常

异常是导致程序中断运行的一种指令流。如果不对异常进行正常处理,则可能导致程序的中断执行,造成不必要的损失。

try 代码块中放的是可能出现异常的代码。

catch 代码块中放的是出现异常后的处理行为。

finally 代码块中的代码用于处理善后工作, 会在最后执行。

其中finally可以根据情况选择加或者不加。

异常示范:

class Quadrangle { //创建一个类
	int i=10;//定义一个整型变量并初始化
}
public class Yichang {
	public static void main(String[] args) {//主方法
		int a=10;//定义一个整型变量并初始化
		int b=0;//定义一个整型变量并初始化
		int temp=a/b;//计算两个变量的商
		System.out.println(temp);//输出结果
 
	}
 
}

运行结果

2.处理异常

1.程序先执行 try 中的代码。
2.如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配。
3.如果找到匹配的异常类型, 就会执行 catch 中的代码。
4.如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者。
5.无论是否找到匹配的异常类型, finally 中的代码都会被执行到(在该方法结束之前执行)。
6.如果上层调用者也没有处理的了异常, 就继续向上传递。
7.一直到 main 方法也没有合适的代码处理异常, 就会交给 JVM 来进行处理, 此时程序就会异常终止。

 
try{//捕捉异常
异常语句
}catch(Exception e){//处理异常
 
}
finally{//会执行的语句
一定会执行的代码
package 第九章;

class Quadrangle { //创建一个类
	int i=10;//定义一个整型变量并初始化
}
 
public class ss { //创建ExceptionDemo01类
	public static void main(String[] args) {//主方法
		int a=10;//定义一个整型变量并初始化
		int b=0;//定义一个整型变量并初始化
		int temp=0;//计算两个变量的商
		try{ temp=a/b;//计算两个变量的商
		}catch(ArithmeticException e){//处理异常
			System.out.println(e);//输出异常信息
		}
 
		System.out.println(temp);//输出结果
 
	}}

运行结果

3.常见异常

  1. 数组越界异常:ArrayIndexOutOfBoundsException
  2. 数字格式化异常:NumberFormatException
  3. 算数异常:ArithmeticException
  4. 空指针异常:NullPointerException

代码

package 第九章;

class Exc{ //创建一个类
	int a=10;//定义一个整型变量并初始化
	int b=10;//定义一个整型变量并初始化
}
 
public class ss { //创建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("程序推出");//输出信息
		}
	}
}

运行结果 4.throws关键字

使用throws关键字声明的方法表示此方法不处理异常,而交给方法调用处进行处理。

 throws声明的方法之后,那么不管操作是否出现异常,都必须使用try...catch语句进行异常处理。
 主方法使用throws后,那么这个异常就将交给JVM进行处理,而后结束程序调用。

代码

package 第九章;

public class ss {  //创建ExceptionDemo02 
	public static void main(String[] args) {//主方法
		tell(10,0);//调用方法并传入值
	}
	public static void tell(int i,int j)throws ArithmeticException{//创建类并抛出算数异常
		int temp=0;//定义一个整型变量并初始化
		temp=i/j;//计算商
		System.out.println(temp);//输出信息
	}
}

运行结果

5.throw关键字

在程序之中可以直接使用throw手动抛出异常类的实例化对象。 

代码

package 第九章;

public class ss {//创建ExceptionDemo03
	public static void main(String[] args) {//主方法
		try{//捕捉异常
			throw new Exception("实例化异常对象");//利用throw关键字直接抛出异常实例化对象
		}catch(Exception e){//处理异常
			System.out.println(e);//输出异常信息
		}
	}
}

运行结果

throw 和 throws的区别:

throw: 指的是在方法之中人为抛出一个异常类对象,这个对象可以是自己实例化,或者是已经存在的。
throws: 指的是在方法的声明上使用,表示此方法在调用时必须处理异常。 

6.自定义异常

自定义异常类一般包含两个构造方法:一个是无参的默认构造方法,另一个构造方法以字符串的形式接收一个定制的异常消息,并将该消息传递给超类的构造方法。

 自定义异常的语法形式为:

<class><自定义异常名><extends><Exception>
在编码规范上,一般将自定义异常类的类名命名为 XXXException,其中 XXX 用来代表该异常的作用。

 代码

package 第九章;

class MyException extends Exception{//创建自定义异常类并继承父类
	public MyException(String msg){//定义方法并传入一个字符串参数
		super(msg);//调用父类构造方法
	}
}
public class ss {//创建类
		public static void main(String[] args) {//主方法
			try{//捕捉异常
				throw new MyException("自定义异常");//直接抛出自定义异常实例化对象
			}catch(MyException e){//处理异常
				System.out.println(e);//输出异常信息
		}
	}
}

运行结果

提示:因为自定义异常继承自 Exception 类,因此自定义异常类中包含父类所有的属性和方法。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值