【Java】(二)自定义异常的定义、拋出和捕获试验

自定义异常的定义、拋出和捕获试验

要求

(1)自定义两个异常类非法姓名异常IllegaNameException和非法地址异常IllegalAddressException。
(2)定义Student类包含Name和Address属性,和setName、setAddress方法,当姓名长度小于1或者大于5抛出IllegaNameExceptio,当地址中不含有”省”或者“市”关键字抛出IllegalAddressException。
(3)在main方法中进行捕获试验。

代码

package exam6;

import java.util.Scanner;

class illegalNameException extends Exception
{
	public illegalNameException()
	{
		super("姓名不合法,长度小于1或大于5\n请重新输入姓名");
	}
//	public illegalNameException(String msg)
//	{
//		super(msg);
//	}
}

class illegalAddressException extends Exception
{
	public illegalAddressException()
	{
		super("给定地址不合法,未包含省/市\n请重新输入地址");
	}
//	public illegalAddressException( String msg)
//	{
//		super(msg);
//	}
}
public class Student 
{
	String name,address;
	public void setName(String name)
	{
		try
		{
			if(name.length()>5||name.length()<1)
				throw new illegalNameException();
			else
			{
				this.name=name;
			}
		}
		catch(illegalNameException e)
		{
			System.out.println(e.getMessage());
			Scanner a=new Scanner(System.in);
			String str1=a.nextLine();
			setName(str1);
		}
	}
	public void setAddress(String address)
	{
		int n=address.length();
		char[] temp=address.toCharArray();
		boolean flag=false;
		for(int i=0;i<n;i++)
		{
			
			if(temp[i]=='省'|| temp[i]=='市')
			{
				flag=true;
				break;
			}
		}
		try
		{
			if(flag)
			{
				this.address=address;
			}
		else
			throw new illegalAddressException();
		}
		catch(illegalAddressException e)
		{
			System.out.println(e.getMessage());
			Scanner a=new Scanner(System.in);
			String str1=a.nextLine();
			setAddress(str1);
		}
	}
	public void showMessage()
	{
		System.out.println("--------------------------------------------------------------------------------------------");
		System.out.println("姓名:"+name);
		System.out.println("地址:"+address);
	}
	public static void main(String args[])
	{
		System.out.println("请输入学生的姓名(长度1~5):");
		Student s1=new Student();
		Scanner se = new Scanner (System.in);
		s1.name=se.nextLine();
		s1.setName(s1.name);
		System.out.println("请输入地址(包含省/市):");
		s1.address=se.nextLine();
		s1.setAddress(s1.address);
		s1.showMessage();
	}
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的问题,我来简单讲一下自定义异常的抛出和捕获,以及Java内置异常捕获与处理。 首先,Java中的异常分为两类:Checked Exception和Unchecked Exception。Checked Exception指的是编译器在编译期间会检查的异常,必须在代码中进行处理或者向上抛出;Unchecked Exception则不需要在代码中进行处理或者向上抛出,也就是说可以不处理。 1. 自定义异常的抛出和捕获 自定义异常通常用于在代码中抛出一些业务逻辑上的异常,比如参数不合法、用户不存在等等。自定义异常需要继承自Exception或者RuntimeException类,可以通过构造方法传入错误信息,示例代码如下: ```java public class MyException extends RuntimeException { public MyException(String message) { super(message); } } ``` 抛出自定义异常的方式可以使用throw关键字,示例代码如下: ```java public void doSomething(int num) { if (num < 0) { throw new MyException("num不能为负数"); } // do something } ``` 捕获自定义异常的方式和Java内置异常一样,使用try-catch语句,示例代码如下: ```java try { doSomething(-1); } catch (MyException e) { System.out.println(e.getMessage()); } ``` 2. Java内置异常捕获与处理 Java提供了一些内置的异常类,比如NullPointerException、ArrayIndexOutOfBoundsException等等。这些异常通常是由于程序运行时出现了问题,需要进行捕获和处理。 Java内置异常的处理方式和自定义异常类似,使用try-catch语句,示例代码如下: ```java try { String str = null; System.out.println(str.length()); } catch (NullPointerException e) { System.out.println("出现了空指针异常"); } ``` 除了try-catch语句,Java还提供了finally语句块和try-with-resources语句来处理异常,这里不再赘述。 总结一下,自定义异常的抛出和捕获需要继承自Exception或者RuntimeException类,使用throw关键字抛出异常,使用try-catch语句捕获异常Java内置异常捕获和处理方式和自定义异常类似,使用try-catch语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值