java throw异常_java throw拋出异常详解

之前给大家介绍了java

throws声明异常,那么和throws不一样的是throw语句用来直接拋出一个异常,后接一个可拋出的异常类对象,下面的话一起来详细的了解一下throw拋出异常吧。

下面是语法格式:throw ExceptionObject;

注意,ExceptionObject必须是Throwable类或者是其子类的对象,哪怕是自定义异常类,也必须是Throwable的直接或者是间接子类。

例:

下面的语句会在编译的时候产生语法错误:throw new String("拋出异常");    // String类不是Throwable类的子类

在throw语句执行的时候,它后面的语句将不执行,这个时候,程序转向调用者程序,寻找和它相匹配的catch语句,执行相应的异常处理程序。

假如,没有找到相匹配的catch语句,那么,再转向上一层的调用程序,这样逐层向上,直到最外层的异常处理程序终止程序并打印出调用栈情况。

throw关键字不会单独使用,它的使用完全符合异常的处理机制,但是,一般来讲用户都在避免异常的产生,所以不会手工抛出一个新的异常类的实例,而往往会抛出程序中已经产生的异常类的实例。

示例:

在某仓库管理系统当中,要求管理员的用户名需要由8位以上的字母或者数字组成,不能含有其他的字符。

当长度在8位以下时拋出异常,并显示异常信息;

当字符含有非字母或者数字时,同样拋出异常,显示异常信息;

代码:import java.util.Scanner;

public class Test05

{

public boolean validateUserName(String username)

{

boolean con = false;

if (username.length() > 8)

{

// 判断用户名长度是否大于8位

for (int i = 0; i 

{

char ch = username.charAt(i); // 获取每一位字符

if ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))

{

con = true;

}

else

{

con = false;

throw new IllegalArgumentException("用户名只能由字母和数字组成!");

}

}

}

else

{

throw new IllegalArgumentException("用户名长度必须大于 8 位!");

}

return con;

}

public static void main(String[] args)

{

Test05 te = new Test05();

Scanner input = new Scanner(System.in);

System.out.println("请输入用户名:");

String username = input.next();

try

{

boolean con = te.validateUserName(username);

if (con)

{

System.out.println("用户名输入正确!");

}

}

catch (IllegalArgumentException e)

{

System.out.println(e);

}

}

}

在validateUserName()方法中两处拋出了IllegalArgumentException异常,也就是当用户名字符含有非字母或者数字以及长度不够8位的时候,在main()方法当中,调用了validateUserName()方法,并使用catch语句捕获该方法可能拋出的异常。

运行程序,当用户输入的用户名包含非字母或者数字的字符时,程序输出异常信息,如下:请输入用户名:

administrator@#

java.lang.IllegalArgumentException: 用户名只能由字母和数字组成!

用户输入的用户名长度不够8位的时候,程序同样会输出异常信息,如下:请输入用户名:

admin

java.lang.IllegalArgumentException: 用户名长度必须大于 8 位!

以上就是对于java throw拋出异常的介绍了,你都清楚了吧,更多常见问题,可以继续的通过奇Q工具网来进行了解哦。

推荐阅读:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值