推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

异常类、自定义异常类的定义与使用

   2023-07-31 网络整理佚名1400
核心提示:异常类的定义:2、异常对象可以调用如下方法得到或输出有关异常的信息;自定义异常类;发生异常时,异常下面的语句将不再执行,如代码中的cet.自定义异常类的定义:自定义异常类是异常类(类)的一个子类,可以根据程序的需要来规定哪些方法产生哪些异常;自定义异常类的使用:类,并在类中创建异常处理方法;部分调用异常信息;}语句和throw关键字的执行流程:

异常类的定义

异常是指程序运行时可能出现的一些错误,比如试图打开一个根本不存在的文件等。异常处理会改变程序的运行流程,给程序处理的机会错误;

1、Java使用 throw 关键字抛出异常类()或者异常类的子类的实例,表示异常的发生;

2、异常对象可以调用以下方法来获取或输出异常的信息;

public String getMessage();
public void printStackTrace();
public String toString();

3、Java使用try{ }catch(){ }语句来处理异常;

try{ }catch(){ } 语句:

1、将可能引发异常的操作放在try{}部分;

2、一旦try{}部分抛出异常对象或者调用可能抛出异常对象的方法,try{}部分会立即停止执行,转向对应的catch部分;

3、程序将异常发生后的处理放在catch(){}部分;

try{ }catch(){ } 语句格式如下:

try{
   ...
 }catch(Exception e){
   ...
 } 
或者
try{
   ...
 }catch(ExceptionSubClass1 e){
   ...
 }catch(ExceptionSubClass2 e){
   ...
 } 

和 分别是继承该类的子类,即自定义异常类;

异常类和 try{ }catch(){ } 语句的使用:

通过 try{} 部分发生异常操作,通过关键字 throw 抛出一个实例,并发送到语句 catch(e){ } 中的异常类对象 e,以及 catch(e){ } 的 { } 部分决定是否打印异常信息并进行处理;

以下代码↗:

public class customizeExceptionTest {
	void method(int x,int y) throws Exception{
		int sum = x + y ;
		if(sum > 100 ){
			throw new Exception("错误,x+y>100");
		}else{
			System.out.println("x+y的值 = "+sum);
		}
	}
	
	public static void main(String [] args){
		customizeExceptionTest cet = new customizeExceptionTest();
		try{
			
			cet.method(11, 11);
			cet.method(10, 10);
			cet.method(100, 1);
			cet.method(1, 1);
		
		}catch(Exception e){
			System.out.println("打印异常信息:"+e.getMessage());
		}
		
	}
}

代码中,try{}部分执行到cet.(100.1);时,会发生异常,通过关键字throw抛出异常

异常实例(“错误,x+y>100”); 并进入catch(){ }部分处理异常;

当try{}中发生异常时,该异常下面的语句将不再被执行,如cet.(1, 1); 代码中的语句不会被执行;

代码输出结果:

x+y 的值 = 22

x+y 的值 = 20

打印异常信息:error,x+y>100

自定义异常类的定义:

自定义异常类是异常类(class)的子类,可以根据程序的需要指定哪些方法生成哪些异常;

1、使用自定义异常类时,需要另外一个Java关键字;

2、关键字可以声明一个方法中发生的几种异常,并在方法的方法体中指定产生异常的操作;

产生异常的操作是指: throw new("异常信息"); //执行完这条语句后,会跳转到catch(){ }部分;

3、即:创建对应异常类的对象,并使用 throw 关键字抛出异常的实例,导致方法结束执行;

自定义异常类的使用:

创建一个类,继承该类,并在类中创建异常处理方法;

以下代码↗:

//自定义异常类,继承Exception  
public class customizeExceptionClass extends Exception  {
	String message;
        //接收异常信息
	public customizeExceptionClass(String string) {
		message = string ;
	}
   //输出异常信息
    public String getMessage(){
    	return message;
    }
}

import java.util.Scanner;
//测试类
public class customizeException {
	public static void main(String[] args) {
	//从键盘输入一个数,判断这个数是否>100,是则抛出异常
	System.out.println("请输入一个数字,并按enter键结束输入:");
	Scanner sc = new Scanner(System.in);
	
        try{
        	double number = sc.nextDouble();
        	for(int i=3;i>0;i--){
        		
        		System.out.println("输入正确,输入次数还剩余:"+i+" 次");
        		
        		number = sc.nextDouble();
        	//通过if语句,判断这个数是否>100,是则抛出异常
        	     if(number > 100){
     		       throw new customizeExceptionClass("输入数值大于100");
     		      }
                 }
        
        }catch(customizeExceptionClass e){   
             System.out.println("异常处理,错误:"+e.getMessage());
        }
        //try{}catch(){} 语句结束
    }
}

代码中自定义了一个异常类ass。 当该异常类运行的try{}部分发生异常时,catch(){ }部分调用异常信息;

代码输出结果:

请输入数字并按回车键结束输入:

12

输入正确,剩余输入次数:3次

14

输入正确,剩余输入次数:2次

155

异常处理,错误:输入值大于100

try{ }catch(){ } 语句和 throw 关键字的执行流程:

上面的代码中,首先执行的是try{}部分的操作。 当输入155时,条件>100成立,抛出new ass("输入值大于100");

抛出异常实例和异常信息,然后跳转到catch(){ }部分,通过()中的自定义异常类对象e接收异常实例和异常信息,

最后{ }部分打印异常信息e.();

关键字用法:

关键字可以声明一个方法中发生的几种异常,并在方法的方法体中指定产生异常的操作;

以下代码↗:

//自定义异常类
public class customizeExceptionClass extends Exception  {
	String message;
	//获取异常信息
	public customizeExceptionClass(String string) {
		message = string ;
	}
    //输出异常信息
    public String getMessage(){
    	return message;
    }
}

//创建可能发生异常的方法 method ,调用 throws 关键字表明产生的若干个异常
public class customizeExceptionTest {
 
	//throws的使用
	void method(int x,int y) throws customizeExceptionClass,Exception{
		int sum = x + y ;
		if(sum > 100 ){
			throw new customizeExceptionClass("错误,x+y>100");
		}else if(sum < 0){
			throw new Exception("错误,x+y<100");
		}else{
			System.out.println("正确,x+y的值 = "+sum);
		}
		
     }
}

//测试类,throws的使用
public class customizeException {
	public static void main(String[] args) {
	//throws的使用
	customizeExceptionTest cet = new customizeExceptionTest();
	try{
		
		cet.method(11, 11);
		cet.method(10, 10);
		cet.method(100,-111);
		cet.method(1, 1);
		
	}catch(customizeExceptionClass e){
		System.out.println("customizeExceptionClass打印异常信息:"+e.getMessage());
	}catch(Exception e){
		System.out.println("Exception打印异常信息:"+e.getMessage());
	}
   }
}

在上面的代码中,方法(int x, int y)使用关键字来指示两种可能的异常。 当操作的try{}部分出现异常情况时,会抛出异常,并转到该异常对应的catch处。 (){} 陈述;

代码输出结果:

正确,x+y 的值 = 22

正确,x+y 的值 = 20

打印异常信息:error,x+y

当代码为cet.(100,-111); 改为cet.(100,111);,出现ass类异常,输出为:

正确,x+y 的值 = 22

正确,x+y 的值 = 20

ass打印异常信息:error,x+y>100

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON